From 2269f950ad5dc72d194cfa1d8cbc2bdf607481d8 Mon Sep 17 00:00:00 2001 From: zm <37181180+zohomail@users.noreply.github.com> Date: Fri, 22 Sep 2023 10:22:40 +0530 Subject: [PATCH 01/17] Zoho Mail connector submission (#2839) * Initial changes * Initial changes * domain text changes * mail notification changes * mail notification changes * Update apiProperties.json property order changed * Update readme.md readme file changes --------- Co-authored-by: barathan-1015 --- .../Zoho Mail/apiDefinition.swagger.json | 1773 +++++++++++++++++ .../Zoho Mail/apiProperties.json | 132 ++ certified-connectors/Zoho Mail/readme.md | 55 + certified-connectors/Zoho Mail/script.csx | 180 ++ 4 files changed, 2140 insertions(+) create mode 100644 certified-connectors/Zoho Mail/apiDefinition.swagger.json create mode 100644 certified-connectors/Zoho Mail/apiProperties.json create mode 100644 certified-connectors/Zoho Mail/readme.md create mode 100644 certified-connectors/Zoho Mail/script.csx diff --git a/certified-connectors/Zoho Mail/apiDefinition.swagger.json b/certified-connectors/Zoho Mail/apiDefinition.swagger.json new file mode 100644 index 0000000000..8f04273312 --- /dev/null +++ b/certified-connectors/Zoho Mail/apiDefinition.swagger.json @@ -0,0 +1,1773 @@ +{ + "swagger": "2.0", + "info": { + "title": "Zoho Mail", + "description": "Secure business email for your organization", + "version": "1.0", + "contact": { + "name": "Zoho Mail", + "email": "zmintegration@zohomail.com", + "url": "https://www.zoho.com/mail/contact.html?src=mpd-menu" + } + }, + "host": "mail.zoho.com", + "basePath": "/", + "schemes": [ + "https" + ], + "consumes": [], + "produces": [], + "paths": { + "/api/accounts": { + "get": { + "consumes": [ + "application/json" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "status": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "title": "Response code", + "description": "Response codes for successful and failure API requests." + } + }, + "description": "Status" + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "type" + }, + "emailAddress": { + "type": "array", + "items": { + "type": "object", + "properties": { + "isAlias": { + "type": "boolean", + "description": "isAlias" + }, + "isPrimary": { + "type": "boolean", + "description": "isPrimary" + }, + "mailId": { + "type": "string", + "description": "mailId" + }, + "isConfirmed": { + "type": "boolean", + "description": "isConfirmed" + } + } + }, + "description": "emailAddress" + }, + "zuid": { + "type": "integer", + "format": "int32", + "description": "zuid" + }, + "accountId": { + "type": "string", + "description": "accountId" + }, + "sequence": { + "type": "integer", + "format": "int32", + "description": "sequence" + }, + "mailboxAddress": { + "type": "string", + "description": "mailboxAddress" + }, + "status": { + "type": "boolean", + "description": "status" + }, + "accountDisplayName": { + "type": "string", + "description": "accountDisplayName" + }, + "accountName": { + "type": "string", + "description": "accountName" + }, + "displayName": { + "type": "string", + "description": "displayName" + }, + "primaryEmailAddress": { + "type": "string", + "description": "primaryEmailAddress" + }, + "enabled": { + "type": "boolean", + "description": "enabled" + }, + "sendMailDetails": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sendMailId": { + "type": "string", + "description": "sendMailId" + }, + "displayName": { + "type": "string", + "description": "displayName" + }, + "serverName": { + "type": "string", + "description": "serverName" + }, + "signatureId": { + "type": "string", + "description": "signatureId" + }, + "serverPort": { + "type": "integer", + "format": "int32", + "description": "serverPort" + }, + "userName": { + "type": "string", + "description": "userName" + }, + "connectionType": { + "type": "string", + "description": "connectionType" + }, + "mode": { + "type": "string", + "description": "mode" + }, + "validated": { + "type": "boolean", + "description": "validated" + }, + "fromAddress": { + "type": "string", + "description": "fromAddress" + }, + "smtpConnection": { + "type": "integer", + "format": "int32", + "description": "smtpConnection" + }, + "validationRequired": { + "type": "boolean", + "description": "validationRequired" + }, + "validationState": { + "type": "integer", + "format": "int32", + "description": "validationState" + }, + "status": { + "type": "boolean", + "description": "status" + } + } + }, + "description": "sendMailDetails" + }, + "emailAlias": { + "type": "array", + "items": { + "type": "string" + }, + "description": "emailAlias" + } + } + }, + "description": "data" + } + } + } + }, + "400": { + "description": "Invalid Input" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Error" + } + }, + "summary": "Get Account Details", + "description": "Get the list of accounts of the currently authenticated user.", + "operationId": "Get_Mail_Account", + "parameters": [], + "x-ms-visibility": "internal" + } + }, + "/api/accounts/{account_id}/messages": { + "post": { + "consumes": [ + "application/json" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "status": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "title": "Response code", + "description": "Response codes for successful and failure API requests." + } + }, + "description": "Status" + }, + "data": { + "type": "object", + "properties": { + "askReceipt": { + "type": "string", + "description": "Refers to the email read receipt", + "title": "Ask receipt" + }, + "subject": { + "type": "string", + "description": "the email subject", + "title": "Subject" + }, + "messageId": { + "type": "string", + "description": "The unique identifier of the email", + "title": "Message ID" + }, + "fromAddress": { + "type": "string", + "title": "From", + "description": "the sender email address" + }, + "bccAddress": { + "type": "string", + "title": "BCC", + "description": "comma-seperated bcc email addresses" + }, + "mailFormat": { + "type": "string", + "title": "Mail format", + "description": "the email format" + }, + "toAddress": { + "type": "string", + "title": "To", + "description": "comma-seperated email addresses" + }, + "content": { + "type": "string", + "title": "Email content", + "description": "the email content" + }, + "ccAddress": { + "type": "string", + "title": "CC", + "description": "comma-seperated cc email addresses" + } + }, + "description": "data" + } + } + } + }, + "400": { + "description": "Invalid Input" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Error" + } + }, + "summary": "Send an email", + "description": "Send a new email from a specified email address", + "operationId": "Send_Mail", + "parameters": [ + { + "name": "account_id", + "description": "The configured user account", + "x-ms-summary": "Account", + "in": "path", + "required": true, + "type": "string", + "x-ms-url-encoding": "single", + "x-ms-dynamic-list": { + "operationId": "Get_Mail_Account", + "itemValuePath": "accountId", + "itemsPath": "data", + "itemTitlePath": "accountDisplayName" + } + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "fromAddress": { + "type": "string", + "description": "Specify the sender email address", + "x-ms-dynamic-list": { + "operationId": "Get_Sender_Details", + "itemValuePath": "fromAddress", + "itemsPath": "sendMailDetails", + "itemTitlePath": "fromAddress", + "parameters": { + "account_id": { + "parameterReference": "account_id" + } + } + }, + "title": "From" + }, + "toAddress": { + "type": "string", + "description": "Specify comma-seperated recipient email addresses", + "title": "To" + }, + "ccAddress": { + "type": "string", + "description": "Specify comma-seperated cc email addresses", + "title": "CC", + "x-ms-visibility": "advanced" + }, + "bccAddress": { + "type": "string", + "description": "Specify comma-seperated bcc email addresses", + "title": "BCC", + "x-ms-visibility": "advanced" + }, + "subject": { + "type": "string", + "description": "Specify the email subject", + "title": "Subject", + "x-ms-visibility": "important" + }, + "content": { + "type": "string", + "description": "Specify the email content", + "title": "Email content", + "format": "html" + }, + "askReceipt": { + "type": "string", + "description": "Refers to the email read receipt", + "title": "Ask receipt", + "enum": [ + "No", + "Yes" + ], + "x-ms-visibility": "advanced" + }, + "mailFormat": { + "type": "string", + "description": "Specify the email format", + "title": "Mail format", + "enum": [ + "html", + "plaintext" + ], + "x-ms-enum-values": [ + { + "displayName": "Rich text", + "value": "html" + }, + { + "displayName": "Plain text", + "value": "plaintext" + } + ], + "x-ms-visibility": "advanced" + }, + "attachmentDetails": { + "type": "array", + "items": { + "type": "object", + "properties": { + "attachmentContent": { + "type": "string", + "description": "Content of file", + "title": "content", + "format": "byte" + }, + "attachmentName": { + "type": "string", + "description": "Enter the Attachment Name", + "title": "name" + } + } + }, + "description": "attachments", + "x-ms-summary": "Attachment" + } + }, + "required": [ + "toAddress", + "fromAddress" + ] + } + } + ] + } + }, + "/api/accounts/{account_id}/messages/draft": { + "post": { + "consumes": [ + "application/json" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "status": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "title": "Response code", + "description": "Response codes for successful and failure API requests." + } + }, + "description": "Status" + }, + "data": { + "type": "object", + "properties": { + "subject": { + "type": "string", + "description": "the email subject", + "title": "Subject" + }, + "messageId": { + "type": "string", + "description": "The unique identifier of the email", + "title": "Message ID" + }, + "fromAddress": { + "type": "string", + "description": "the sender email address", + "title": "From" + }, + "bccAddress": { + "type": "string", + "description": "comma-seperated bcc email addresses", + "title": "Bcc" + }, + "mailFormat": { + "type": "string", + "description": "format of email", + "title": "Mail format" + }, + "toAddress": { + "type": "string", + "description": "comma-seperated email addresses", + "title": "To" + }, + "content": { + "type": "string", + "description": "the email content", + "title": "Mail body" + }, + "ccAddress": { + "type": "string", + "description": "comma-seperated cc email addresses", + "title": "CC" + } + }, + "description": "data" + } + } + } + }, + "400": { + "description": "Invalid Input" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Error" + } + }, + "summary": "Save Draft or Template", + "description": "Save the email content either as a draft or as a template", + "operationId": "Save_Draft", + "parameters": [ + { + "name": "account_id", + "description": "The configured user account", + "x-ms-summary": "Account", + "in": "path", + "required": true, + "type": "string", + "x-ms-url-encoding": "single", + "x-ms-dynamic-list": { + "operationId": "Get_Mail_Account", + "itemValuePath": "accountId", + "itemsPath": "data", + "itemTitlePath": "accountDisplayName" + } + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "description": "choose type to save either draft or template", + "title": "Save as", + "default": "draft", + "x-ms-visibility": "advanced", + "enum": [ + "draft", + "template" + ], + "x-enum-values": [ + { + "displayName": "Draft", + "value": "draft" + }, + { + "displayName": "Template", + "value": "template" + } + ] + }, + "fromAddress": { + "type": "string", + "description": "Specify the sender email address", + "x-ms-dynamic-list": { + "operationId": "Get_Sender_Details", + "itemValuePath": "fromAddress", + "itemsPath": "sendMailDetails", + "itemTitlePath": "fromAddress", + "parameters": { + "account_id": { + "parameterReference": "account_id" + } + } + }, + "title": "From" + }, + "toAddress": { + "type": "string", + "description": "Specify comma-seperated recipient email addresses", + "title": "To" + }, + "ccAddress": { + "type": "string", + "description": "Specify comma-seperated cc email addresses", + "title": "CC", + "x-ms-visibility": "advanced" + }, + "bccAddress": { + "type": "string", + "description": "Specify comma-seperated bcc email addresses", + "title": "BCC", + "x-ms-visibility": "advanced" + }, + "subject": { + "type": "string", + "title": "Subject", + "description": "Specify the email subject" + }, + "content": { + "type": "string", + "title": "Email content", + "format": "html", + "description": "Specify the email content" + }, + "askReceipt": { + "type": "string", + "description": "Refers to the email read receipt", + "title": "Ask receipt", + "enum": [ + "No", + "Yes" + ], + "x-ms-visibility": "advanced" + }, + "mailFormat": { + "type": "string", + "description": "Specify the email format", + "title": "Mail format", + "enum": [ + "html", + "plaintext" + ], + "x-ms-enum-values": [ + { + "displayName": "Rich text", + "value": "html" + }, + { + "displayName": "Plain text", + "value": "plaintext" + } + ], + "x-ms-visibility": "advanced" + }, + "attachmentDetails": { + "type": "array", + "items": { + "type": "object", + "properties": { + "attachmentContent": { + "type": "string", + "description": "Specify the email content", + "title": "content", + "format": "byte" + }, + "attachmentName": { + "type": "string", + "description": "Specify the name of your attachment", + "title": "name" + } + } + }, + "description": "attachments", + "x-ms-summary": "Attachment" + } + }, + "required": [ + "mode", + "fromAddress", + "toAddress" + ] + } + } + ] + } + }, + "/integPlatform/api/outgoingWebhooks/newcriteriamail": { + "x-ms-notification-content": { + "schema": { + "type": "object", + "properties": { + "summary": { + "type": "string", + "x-ms-summary": "Summary", + "description": "Displays email summary in email listing" + }, + "sentDateInGMT": { + "type": "integer", + "format": "int32", + "x-ms-summary": "Sent on", + "description": "The email's sent time in GMT" + }, + "subject": { + "type": "string", + "x-ms-summary": "Subject", + "description": "the email subject" + }, + "messageId": { + "type": "integer", + "format": "int64", + "x-ms-summary": "Message ID", + "description": "The unique identifier of the email" + }, + "toAddress": { + "type": "string", + "x-ms-summary": "To", + "description": "comma-seperated receipient email addresses" + }, + "ccAddress": { + "type": "string", + "x-ms-summary": "CC", + "description": "comma-seperated cc email addresses" + }, + "size": { + "type": "integer", + "format": "int32", + "x-ms-summary": "Size", + "description": "the email size" + }, + "sender": { + "type": "string", + "x-ms-summary": "Sender", + "description": "The name of the email sender" + }, + "receivedTime": { + "type": "integer", + "format": "int32", + "x-ms-summary": "Received time", + "description": "The email's received time" + }, + "fromAddress": { + "type": "string", + "x-ms-summary": "From", + "description": "the sender email address" + }, + "html": { + "type": "string", + "x-ms-summary": "Body", + "description": "the email content" + } + } + }, + "description": "response of new mail" + }, + "post": { + "consumes": [ + "application/json" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "status": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "title": "Response code", + "description": "Response codes for successful and failure API requests." + } + }, + "description": "Status" + }, + "data": { + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "functionid": { + "type": "string", + "description": "functionid" + }, + "FILTER_DATA": { + "type": "object", + "properties": { + "filterId": { + "type": "string", + "description": "Filter ID of webhook" + }, + "matchingCondition": { + "type": "string", + "description": "Matching condition of webhook" + }, + "fromDate": { + "type": "string", + "description": "From date" + }, + "sequence": { + "type": "integer", + "format": "int32", + "description": "sequence" + }, + "mailsCount": { + "type": "string", + "description": "Mail count" + }, + "enable": { + "type": "boolean", + "description": "enable" + }, + "criterias": { + "type": "array", + "items": { + "type": "object", + "properties": { + "criteriaId": { + "type": "string", + "description": "criteriaId" + }, + "lhs": { + "type": "string", + "description": "lhs" + }, + "rhs": { + "type": "string", + "description": "rhs" + }, + "operator": { + "type": "string", + "description": "operator" + } + } + }, + "description": "criterias" + }, + "name": { + "type": "string", + "description": "Webhook name" + }, + "canDelete": { + "type": "boolean", + "description": "Can delete" + }, + "filterType": { + "type": "integer", + "format": "int32", + "description": "Filter type" + }, + "actions": { + "type": "object", + "properties": { + "outgoingWebhooks": { + "type": "object", + "properties": { + "integId": { + "type": "integer", + "format": "int32", + "description": "integId" + }, + "zuid": { + "type": "integer", + "format": "int32", + "description": "zuid" + } + }, + "description": "outgoingWebhooks" + }, + "stopEvaluation": { + "type": "string", + "description": "stopEvaluation" + } + }, + "description": "actions" + }, + "forImport": { + "type": "boolean", + "description": "forImport" + } + }, + "description": "FILTER_DATA" + }, + "X-Hook-Secret": { + "type": "string", + "description": "X-Hook-Secret" + }, + "functionName": { + "type": "string", + "description": "Function name" + }, + "metaOnly": { + "type": "boolean", + "description": "Is meta" + }, + "integId": { + "type": "string", + "description": "Integration ID" + }, + "webhookName": { + "type": "string", + "description": "Webhook name" + }, + "category": { + "type": "integer", + "format": "int32", + "description": "category" + }, + "webhookURL": { + "type": "string", + "description": "Webhook URL" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "status" + } + }, + "description": "data" + }, + "status": { + "type": "string", + "description": "status" + } + }, + "description": "data" + } + } + } + }, + "400": { + "description": "Invalid Input" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Error" + } + }, + "summary": "New Mail Notification", + "x-ms-trigger": "single", + "operationId": "New_Mail_Trigger", + "parameters": [ + { + "name": "accId", + "x-ms-summary": "Account", + "in": "query", + "required": true, + "type": "string", + "x-ms-dynamic-values": { + "operationId": "Get_Mail_Account", + "value-path": "accountId", + "value-collection": "data", + "value-title": "accountDisplayName" + }, + "description": "The configured user account" + }, + { + "name": "category", + "in": "query", + "required": true, + "type": "integer", + "default": 3, + "x-ms-visibility": "internal", + "x-ms-summary": "Category", + "description": "category of the notification" + }, + { + "name": "action", + "in": "query", + "required": true, + "type": "string", + "default": "CREATE_OWH", + "x-ms-visibility": "internal", + "x-ms-summary": "Action", + "description": "Create action for the notification." + }, + { + "name": "metaOnly", + "in": "query", + "required": true, + "type": "boolean", + "default": false, + "x-ms-summary": "Meta only", + "x-ms-visibility": "internal", + "description": "Select meta only" + }, + { + "name": "matchingCondition", + "in": "query", + "required": true, + "type": "string", + "default": "ALL", + "x-ms-summary": "Matching Condition", + "x-ms-visibility": "internal", + "description": "condition of mail notification" + }, + { + "name": "criterias", + "in": "query", + "required": true, + "type": "string", + "x-ms-summary": "sender", + "description": "Specify the sender email address" + }, + { + "name": "body", + "in": "body", + "required": true, + "x-ms-summary": "", + "schema": { + "type": "object", + "properties": { + "webhookURL": { + "type": "string", + "description": "webhookURL", + "title": "", + "x-ms-notification-url": true, + "x-ms-visibility": "internal" + } + }, + "required": [ + "webhookURL" + ] + } + } + ], + "description": "When new mail arrives from sender" + } + }, + "/integPlatform/api/outgoingWebhooks": { + "delete": { + "responses": { + "200": { + "description": "Ok", + "schema": { + "type": "object", + "properties": { + "status": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "title": "Response code", + "description": "Response codes for successful and failure API requests." + } + }, + "description": "Status" + }, + "data": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "status" + } + }, + "description": "data" + } + } + } + }, + "400": { + "description": "Invalid Input" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Error" + } + }, + "summary": "Delete Webhook", + "operationId": "Delete_Webhook", + "x-ms-visibility": "internal", + "parameters": [ + { + "name": "action", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "integId", + "in": "query", + "required": false, + "type": "integer" + }, + { + "name": "accId", + "in": "query", + "required": false, + "type": "integer" + }, + { + "name": "filterId", + "in": "query", + "required": false, + "type": "integer" + } + ], + "description": "Deletes a webhook" + } + }, + "/api/accounts/{account_id}": { + "get": { + "responses": { + "200": { + "description": "Ok", + "schema": { + "type": "object", + "properties": { + "emailAddress": { + "type": "array", + "items": { + "type": "object", + "properties": { + "isAlias": { + "type": "boolean", + "description": "isAlias" + }, + "isPrimary": { + "type": "boolean", + "description": "isPrimary" + }, + "mailId": { + "type": "string", + "description": "mailId" + }, + "isConfirmed": { + "type": "boolean", + "description": "isConfirmed" + } + } + }, + "description": "emailAddress" + }, + "sendMailDetails": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sendMailId": { + "type": "string", + "description": "sendMailId" + }, + "displayName": { + "type": "string", + "description": "displayName" + }, + "validated": { + "type": "boolean", + "description": "validated" + }, + "fromAddress": { + "type": "string", + "description": "fromAddress" + }, + "status": { + "type": "boolean", + "description": "status" + } + } + }, + "description": "sendMailDetails" + } + } + } + }, + "400": { + "description": "Invalid Input" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Error" + } + }, + "summary": "Get sender list", + "description": "Get the list of all email senders", + "operationId": "Get_Sender_Details", + "x-ms-visibility": "internal", + "parameters": [ + { + "name": "account_id", + "description": "The configured user account", + "x-ms-summary": "Account", + "in": "path", + "required": true, + "type": "string", + "x-ms-url-encoding": "single" + } + ] + } + }, + "/api/accounts/{account_id}/messages/search": { + "post": { + "consumes": [ + "application/json" + ], + "responses": { + "200": { + "description": "default", + "schema": { + "type": "object", + "properties": { + "status": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "title": "Response code", + "description": "Response codes for successful and failure API requests." + } + }, + "description": "Status" + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "summary": { + "type": "string", + "description": "Displays email summary in email listing", + "title": "Summary" + }, + "sentDateInGMT": { + "type": "string", + "description": "The email's sent time in GMT", + "title": "Sent on" + }, + "subject": { + "type": "string", + "description": "the email subject", + "title": "Subject" + }, + "messageId": { + "type": "string", + "description": "The unique identifier of the email", + "title": "Message ID" + }, + "hasInline": { + "type": "string", + "description": "the email has inline", + "title": "Has inline" + }, + "toAddress": { + "type": "string", + "description": "comma-seperated receipient email addresses", + "title": "To" + }, + "folderId": { + "type": "string", + "description": "The unique identifier of a folder", + "title": "Folder id" + }, + "ccAddress": { + "type": "string", + "description": "comma-seperated CC email addresses", + "title": "CC" + }, + "hasAttachment": { + "type": "string", + "description": "email has attachment", + "title": "Has Attachment" + }, + "size": { + "type": "string", + "description": "The total email size", + "title": "Size" + }, + "sender": { + "type": "string", + "description": "sender", + "title": "Sender name" + }, + "receivedTime": { + "type": "string", + "description": "The email's received time", + "title": "Received time" + }, + "fromAddress": { + "type": "string", + "description": "the sender email address", + "title": "From" + }, + "status": { + "type": "string", + "description": "The read or unread state of the email", + "title": "Read status" + } + } + }, + "description": "data" + } + } + } + }, + "400": { + "description": "Invalid Input" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Error" + } + }, + "summary": "Search Mail", + "description": "List emails based on search parameters", + "operationId": "Search_Mail", + "parameters": [ + { + "name": "account_id", + "description": "The configured user account", + "x-ms-summary": "Account", + "in": "path", + "required": true, + "type": "string", + "x-ms-url-encoding": "single", + "x-ms-dynamic-list": { + "operationId": "Get_Mail_Account", + "itemValuePath": "accountId", + "itemsPath": "data", + "itemTitlePath": "accountDisplayName" + } + }, + { + "name": "start", + "in": "query", + "type": "integer", + "default": 1, + "x-ms-visibility": "advanced", + "required": true, + "x-ms-summary": "Start search", + "description": "mail search start from" + }, + { + "name": "limit", + "in": "query", + "type": "integer", + "default": 10, + "required": true, + "x-ms-visibility": "advanced", + "description": "limit of mail to fetch", + "x-ms-summary": "Search limit" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "entire": { + "type": "string", + "title": "Entire email", + "description": "Specify a search term in any part of the email" + }, + "content": { + "type": "string", + "title": "Email content", + "description": "Specify a search term in the core email content" + }, + "sender": { + "type": "string", + "title": "From", + "description": "Specify a search term or an email address" + }, + "to": { + "type": "string", + "title": "To", + "description": "Specify a search term or an email address" + }, + "cc": { + "type": "string", + "title": "CC", + "description": "Specify a search term or an email address", + "x-ms-visibility": "advanced" + }, + "subject": { + "type": "string", + "title": "Subject", + "description": "Specify a search term in the email subject" + }, + "fileName": { + "type": "string", + "title": "Attachment name", + "description": "Specify a search term in the attachment name", + "x-ms-visibility": "advanced" + }, + "fileContent": { + "type": "string", + "title": "Attachment content", + "description": "Specify a search term in the attachment content", + "x-ms-visibility": "advanced" + }, + "fromDate": { + "type": "string", + "title": "From date", + "description": "Search for emails from the specified date", + "format": "date" + }, + "toDate": { + "type": "string", + "title": "To date", + "description": "Search for emails until the specified date", + "format": "date" + }, + "groupResult": { + "type": "boolean", + "description": "Specify if emails of the same conversation should be grouped.", + "x-ms-visibility": "advanced", + "title": "Group result", + "enum": [ + true, + false + ] + }, + "in": { + "type": "string", + "description": "Search for emails in the specified folder", + "x-ms-dynamic-list": { + "operationId": "Get_All_Folder", + "itemValuePath": "folderName", + "itemsPath": "data", + "itemTitlePath": "folderName", + "parameters": { + "account_id": { + "parameterReference": "account_id" + } + } + }, + "title": "Folder" + }, + "label": { + "type": "string", + "description": "Search for emails with the specified label", + "x-ms-dynamic-list": { + "operationId": "Get_All_Label", + "itemValuePath": "displayName", + "itemsPath": "data", + "itemTitlePath": "displayName", + "parameters": { + "account_id": { + "parameterReference": "account_id" + } + } + }, + "title": "Label" + } + } + } + } + ] + } + }, + "/api/accounts/{account_id}/folders": { + "get": { + "responses": { + "200": { + "description": "default", + "schema": { + "type": "object", + "properties": { + "status": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "title": "Response code", + "description": "Response codes for successful and failure API requests." + } + }, + "description": "Status" + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "URI": { + "type": "string", + "description": "URI" + }, + "path": { + "type": "string", + "description": "path" + }, + "imapAccess": { + "type": "boolean", + "description": "imapAccess" + }, + "folderType": { + "type": "string", + "description": "folderType" + }, + "folderName": { + "type": "string", + "description": "folderName" + }, + "folderId": { + "type": "integer", + "format": "int32", + "description": "folderId" + }, + "previousFolderId": { + "type": "integer", + "format": "int32", + "description": "previousFolderId" + } + } + }, + "description": "data" + } + } + } + }, + "400": { + "description": "Invalid Input" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Error" + } + }, + "summary": "Get folders", + "description": "Get details of all folders for the specified user account.", + "operationId": "Get_All_Folder", + "parameters": [ + { + "name": "account_id", + "description": "The configured user account", + "x-ms-summary": "Account", + "in": "path", + "required": true, + "type": "string", + "x-ms-url-encoding": "single", + "x-ms-dynamic-list": { + "operationId": "Get_Mail_Account", + "itemValuePath": "accountId", + "itemsPath": "data", + "itemTitlePath": "accountDisplayName" + } + } + ], + "x-ms-visibility": "internal" + } + }, + "/api/accounts/{account_id}/labels": { + "get": { + "consumes": [ + "application/json" + ], + "responses": { + "200": { + "description": "default", + "schema": { + "type": "object", + "properties": { + "status": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "title": "Response code", + "description": "Response codes for successful and failure API requests." + } + }, + "description": "Status" + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "URI": { + "type": "string", + "description": "URI" + }, + "labelId": { + "type": "integer", + "format": "int32", + "description": "labelId" + }, + "displayName": { + "type": "string", + "description": "displayName" + }, + "sequence": { + "type": "integer", + "format": "int32", + "description": "sequence" + }, + "color": { + "type": "string", + "description": "color" + } + } + }, + "description": "data" + } + } + } + }, + "400": { + "description": "Invalid Input" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Error" + } + }, + "summary": "Get labels", + "description": "Get details of all labels for the specified user account.", + "operationId": "Get_All_Label", + "parameters": [ + { + "name": "account_id", + "description": "The configured user account", + "x-ms-summary": "Account", + "in": "path", + "required": true, + "type": "string", + "x-ms-url-encoding": "single", + "x-ms-dynamic-list": { + "operationId": "Get_Mail_Account", + "itemValuePath": "accountId", + "itemsPath": "data", + "itemTitlePath": "accountDisplayName" + } + } + ], + "x-ms-visibility": "internal" + } + }, + "/api/accounts/{account_id}/folders/1/messages/{message_id}/content": { + "get": { + "consumes": [ + "application/json" + ], + "responses": { + "200": { + "description": "Ok", + "schema": { + "type": "object", + "properties": { + "status": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "title": "Response code", + "description": "Response codes for successful and failure API requests." + } + }, + "description": "Status" + }, + "data": { + "type": "object", + "properties": { + "blockContent": { + "type": "string", + "description": "blockContent" + }, + "messageId": { + "type": "integer", + "format": "int32", + "description": "messageId" + }, + "content": { + "type": "string", + "description": "content" + } + }, + "description": "data" + } + } + } + }, + "400": { + "description": "Invalid Input" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Error" + } + }, + "summary": "Get email content", + "operationId": "Get_Email_Content", + "description": "Get the email content based on message ID", + "parameters": [ + { + "name": "account_id", + "description": "The configured user account", + "x-ms-summary": "Account", + "in": "path", + "required": true, + "type": "string", + "x-ms-url-encoding": "single", + "x-ms-dynamic-list": { + "operationId": "Get_Mail_Account", + "itemValuePath": "accountId", + "itemsPath": "data", + "itemTitlePath": "accountDisplayName" + } + }, + { + "name": "message_id", + "x-ms-summary": "Message ID", + "type": "string", + "in": "path", + "required": true, + "description": "The unique identifier of the email", + "x-ms-url-encoding": "single" + } + ] + } + } + }, + "definitions": {}, + "parameters": {}, + "responses": {}, + "securityDefinitions": { + "oauth2-auth": { + "type": "oauth2", + "flow": "accessCode", + "authorizationUrl": "https://accounts.zoho.com/oauth/v2/auth", + "tokenUrl": "https://accounts.zoho.com/oauth/v2/token", + "scopes": { + "VirtualOffice.accounts.READ": "VirtualOffice.accounts.READ", + "VirtualOffice.messages.ALL": "VirtualOffice.messages.ALL", + "VirtualOffice.tasks.ALL": "VirtualOffice.tasks.ALL", + "VirtualOffice.folders.ALL": "VirtualOffice.folders.ALL", + "VirtualOffice.tags.ALL": "VirtualOffice.tags.ALL", + "VirtualOffice.filters.ALL": "VirtualOffice.filters.ALL", + "VirtualOffice.ogwebhooks.ALL": "VirtualOffice.ogwebhooks.ALL", + "ZMIntegration.integrations.ALL": "ZMIntegration.integrations.ALL" + } + } + }, + "security": [ + { + "oauth2-auth": [ + "VirtualOffice.accounts.READ", + "VirtualOffice.messages.ALL", + "VirtualOffice.tasks.ALL", + "VirtualOffice.folders.ALL", + "VirtualOffice.tags.ALL", + "VirtualOffice.filters.ALL", + "VirtualOffice.ogwebhooks.ALL", + "ZMIntegration.integrations.ALL" + ] + } + ], + "tags": [], + "x-ms-connector-metadata": [ + { + "propertyName": "Website", + "propertyValue": "https://www.zoho.com/zohomail/" + }, + { + "propertyName": "Privacy policy", + "propertyValue": "https://www.zoho.com/privacy.html" + }, + { + "propertyName": "Categories", + "propertyValue": "Communication" + } + ] +} \ No newline at end of file diff --git a/certified-connectors/Zoho Mail/apiProperties.json b/certified-connectors/Zoho Mail/apiProperties.json new file mode 100644 index 0000000000..16976c2ee3 --- /dev/null +++ b/certified-connectors/Zoho Mail/apiProperties.json @@ -0,0 +1,132 @@ +{ + "properties": { + "connectionParameters": { + "token": { + "type": "oauthSetting", + "oAuthSettings": { + "identityProvider": "oauth2generic", + "clientId": "", + "scopes": [ + "VirtualOffice.accounts.READ", + "VirtualOffice.messages.ALL", + "VirtualOffice.folders.ALL", + "VirtualOffice.tags.ALL", + "VirtualOffice.filters.ALL", + "VirtualOffice.ogwebhooks.ALL" + ], + "redirectMode": "Global", + "redirectUrl": "https://global.consent.azure-apim.net/redirect", + "properties": { + "IsFirstParty": "False", + "IsOnbehalfofLoginSupported": false + }, + "customParameters": { + "authorizationUrlTemplate": { + "value": "https://accounts.zoho{CustomHost}/oauth/v2/auth" + }, + "authorizationUrlQueryStringTemplate": { + "value": "?response_type=code&client_id={clientId}&redirect_uri={redirectUrl}&state={State}&scope={Scopes}&access_type=offline&prompt=consent" + }, + "tokenUrlTemplate": { + "value": "https://accounts.zoho{CustomHost}/oauth/v2/token" + }, + "tokenBodyTemplate": { + "value": "code={code}&grant_type=authorization_code&redirect_uri={redirectUrl}&client_id={clientId}&client_secret={clientSecret}&scope={Scopes}" + }, + "refreshUrlTemplate": { + "value": "https://accounts.zoho{CustomHost}/oauth/v2/token" + }, + "refreshBodyTemplate": { + "value": "grant_type=refresh_token&refresh_token={refreshToken}&client_id={clientId}&client_secret={clientSecret}" + } + } + } + }, + "token:customHost": { + "type": "string", + "uiDefinition": { + "constraints": { + "required": "true", + "tabIndex": 3, + "allowedValues": [ + { + "text": "US (zoho.com)", + "value": ".com" + }, + { + "text": "EU (zoho.eu)", + "value": ".eu" + }, + { + "text": "IN (zoho.in)", + "value": ".in" + }, + { + "text": "AU (zoho.com.au)", + "value": ".com.au" + }, + { + "text": "JP (zoho.jp)", + "value": ".jp" + } + ] + }, + "displayName": "Select the region where your Zoho account data resides.", + "description": "Select the domain." + } + } + }, + "scriptOperations": [ + "Get_Sender_Details", + "Send_Mail", + "Save_Draft", + "Search_Mail" + ], + "iconBrandColor": "#236eb4", + "capabilities": [], + "policyTemplateInstances": [ + { + "templateId": "dynamichosturl", + "title": "Set host for connection", + "parameters": { + "x-ms-apimTemplateParameter.urlTemplate": "https://mail.zoho@connectionParameters('token:customHost')" + } + }, + { + "templateId": "routerequesttoendpoint", + "title": "Webhook Route", + "parameters": { + "x-ms-apimTemplateParameter.newPath": "/integPlatform/api/outgoingWebhooks", + "x-ms-apimTemplateParameter.httpMethod": "@Request.OriginalHTTPMethod", + "x-ms-apimTemplate-operationName": [ + "New_Mail_Trigger" + ] + } + }, + { + "templateId": "setheader", + "title": "User Agent", + "parameters": { + "x-ms-apimTemplateParameter.name": "user-agent", + "x-ms-apimTemplateParameter.value": "MS PowerAutomate", + "x-ms-apimTemplateParameter.existsAction": "override", + "x-ms-apimTemplate-policySection": "Request" + } + }, + { + "templateId": "setqueryparameter", + "title": "SetFromMailParameter", + "parameters": { + "x-ms-apimTemplateParameter.name": "criterias", + "x-ms-apimTemplateParameter.value": "[{\"lhs\":\"sender\",\"operator\":\"contains\",\"rhs\":\"@queryParameters('criterias')\"}]", + "x-ms-apimTemplateParameter.existsAction": "override", + "x-ms-apimTemplate-operationName": [ + "New_Mail_Trigger" + ] + } + } + ], + "publisher": "Zoho Corporation", + "stackOwner": "Zoho Corporation" + } +} diff --git a/certified-connectors/Zoho Mail/readme.md b/certified-connectors/Zoho Mail/readme.md new file mode 100644 index 0000000000..1547292e9d --- /dev/null +++ b/certified-connectors/Zoho Mail/readme.md @@ -0,0 +1,55 @@ +# Zoho Mail + +Zoho Mail connector gives you the power to manage your emails and perform actions such as saving them as drafts, receiving them, and triggering flows when new emails arrive. + +## Publisher: Zoho Corporation + +## Prerequisites + +A verified Zoho Mail account. Click [here](https://zoho.com/zohomail) to create your first account. + +## Supported Operations + +The connector supports the following operations: + +### Send an email + +Send a new email from a specified email address + +### Save draft or template + +Save the email content either as a draft or as a template + +### Get email content + +Get the email content based on message ID + +### Search Mail + +Search for emails based on search parameters. + +## Supported Triggers + +The connector supports the following operations: + +### New Mail Notification + +Receive a new email notification from sender. + +## Obtaining Credentials + +Zoho Mail API uses OAuth2.0 to authenticate and hence no secondary authentication is required once the account has been set up. + +## Known Issues and Limitations + +* The total email size, including the email headers, body content, inline images, and attachments should not exceed the plan limit. +* Zoho Mail cannot be used for sending out bulk emails and other emails that violates Zoho Mail usage policy. Click [here](https://www.zoho.com/mail/help/usage-policy.html) for more details. + +## Frequently Asked Questions + +https://help.zoho.com/portal/en/kb/mail + +## Deployment Instructions +Refer the documentation [here](https://learn.microsoft.com/en-us/connectors/custom-connectors/paconn-cli) to deploy this connector as a custom connector in Microsoft Power Automate and Power Apps. + + diff --git a/certified-connectors/Zoho Mail/script.csx b/certified-connectors/Zoho Mail/script.csx new file mode 100644 index 0000000000..475a2ed09e --- /dev/null +++ b/certified-connectors/Zoho Mail/script.csx @@ -0,0 +1,180 @@ +public class Script : ScriptBase +{ + public override async Task ExecuteAsync() + { + var dict = new Dictionary(); + + if(this.Context.OperationId == "Get_Sender_Details"){ + string url = this.Context.Request.RequestUri.LocalPath; + string pattern = "^/api/accounts/([0-9]+)"; + Match match = Regex.Match(url,pattern); + string accountId = match.Groups[1].Value; + Uri originalUri = this.Context.Request.RequestUri; + string modifiedUri = originalUri.ToString().Replace("/"+accountId, ""); + this.Context.Request.RequestUri = new Uri(modifiedUri); + HttpResponseMessage response = await this.Context.SendAsync(this.Context.Request, this.CancellationToken).ConfigureAwait(continueOnCapturedContext: false); + string responseString = await response.Content.ReadAsStringAsync().ConfigureAwait(continueOnCapturedContext: false); + JObject result = JObject.Parse(responseString); + JObject respObj = JObject.Parse("{}"); + JArray dataArray = (JArray)result["data"]; + JArray send_mail_details = new JArray(); + JArray sendMailArr = JArray.Parse("[]"); + + if(dataArray != null) + { + for(int i=0; i attResponseMessage = uploadAllAttachments(attachments); + HttpResponseMessage httpRespMsg = await attResponseMessage; + if(!httpRespMsg.IsSuccessStatusCode){ + return httpRespMsg; + } + string responseString = await httpRespMsg.Content.ReadAsStringAsync().ConfigureAwait(continueOnCapturedContext: false); + JObject attRes = JObject.Parse(responseString); + sendMailObj.Remove("attachmentDetails"); + sendMailObj.Add(new JProperty("attachments",(JArray)attRes["data"])); + } + + this.Context.Request.Content = CreateJsonContent(sendMailObj.ToString()); + HttpResponseMessage mailRes = await this.Context.SendAsync(this.Context.Request, this.CancellationToken).ConfigureAwait(continueOnCapturedContext: false); + return mailRes; + + } + else if(this.Context.OperationId == "Save_Draft") + { + JObject sendMailObj = JObject.Parse(await this.Context.Request.Content.ReadAsStringAsync()); + JArray attachments = (JArray)sendMailObj["attachmentDetails"]; + if(attachments != null) { + Task attResponseMessage = uploadAllAttachments(attachments); + HttpResponseMessage httpRespMsg = await attResponseMessage; + string responseString = await httpRespMsg.Content.ReadAsStringAsync().ConfigureAwait(continueOnCapturedContext: false); + JObject attRes = JObject.Parse(responseString); + + sendMailObj.Remove("attachmentDetails"); + sendMailObj.Add(new JProperty("attachments",(JArray)attRes["data"])); + + } + + Uri originalUri = this.Context.Request.RequestUri; + string modifiedUri = originalUri.ToString().Replace("/draft", ""); + this.Context.Request.RequestUri = new Uri(modifiedUri); + + this.Context.Request.Content = CreateJsonContent(sendMailObj.ToString()); + HttpResponseMessage mailRes = await this.Context.SendAsync(this.Context.Request, this.CancellationToken).ConfigureAwait(continueOnCapturedContext: false); + return mailRes; + + } + else if(this.Context.OperationId == "Search_Mail") + { + JObject searchObject = JObject.Parse(await this.Context.Request.Content.ReadAsStringAsync()); + string searchString = ""; + foreach (var searchCriteria in searchObject) + { + string name = searchCriteria.Key; + JToken value = searchCriteria.Value; + string searchValue = (string)value; + if(name == "fromDate" || name == "toDate"){ + searchValue = DateTime.Parse(searchValue).ToString("dd-MMM-yyyy"); + } + if(searchString == "") + { + searchString = name +":"+searchValue; + } + else + { + searchString = searchString + "::" + name +":"+ searchValue; + } + } + if(searchString == ""){ + searchString = "entire:@"; + } + var uriBuilder = new UriBuilder(this.Context.Request.RequestUri); + this.Context.Request.Method = HttpMethod.Get; + this.Context.Request.Content = new StringContent(string.Empty); + var query = System.Web.HttpUtility.ParseQueryString(uriBuilder.Query); + query["searchKey"] = searchString; + uriBuilder.Query = query.ToString(); + this.Context.Request.RequestUri = uriBuilder.Uri; + HttpResponseMessage mailRes = await this.Context.SendAsync(this.Context.Request, this.CancellationToken).ConfigureAwait(continueOnCapturedContext: false); + return mailRes; + + } + HttpResponseMessage errorResponse = new HttpResponseMessage(HttpStatusCode.BadRequest); + errorResponse.Content = CreateJsonContent("{}"); + return errorResponse; + } + public async Task uploadAllAttachments(JArray attachments) + { + using(HttpRequestMessage attachmentReq = CloneHttpRequest(this.Context.Request)) + { + string url = attachmentReq.RequestUri.ToString()+"/attachments?uploadType=multipart"; + url = url.Replace("/draft",""); + attachmentReq.RequestUri = new Uri(url); + using(MultipartFormDataContent form = new MultipartFormDataContent()) + { + for(int attIndex=0; attIndex prop in request.Properties) + { + clone.Properties.Add(prop); + } + foreach (KeyValuePair> header in request.Headers) + { + clone.Headers.TryAddWithoutValidation(header.Key, header.Value); + } + clone.Headers.TryAddWithoutValidation("Content-Type", "application/octet-stream"); + return clone; + } +} From 11cbb6077d76ef7760a7c29cc9d6efbc0bf35c99 Mon Sep 17 00:00:00 2001 From: Hendrik Bulens Date: Fri, 22 Sep 2023 11:46:11 +0200 Subject: [PATCH 02/17] Dime.Scheduler (on-prem): case-sensitive auth param (#2963) * Add Dime.Scheduler connector * Remove type from policyTemplateInstances * Filter typo * Apply certified connector readme template * Update auth methods and rename connector * Bump version * Typo * Case-sensitive user name param --- .../Dime.Scheduler (on-prem)/apiProperties.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/certified-connectors/Dime.Scheduler (on-prem)/apiProperties.json b/certified-connectors/Dime.Scheduler (on-prem)/apiProperties.json index 7abea00665..98046ae57e 100644 --- a/certified-connectors/Dime.Scheduler (on-prem)/apiProperties.json +++ b/certified-connectors/Dime.Scheduler (on-prem)/apiProperties.json @@ -14,7 +14,7 @@ } } }, - "userName": { + "username": { "type": "string", "uiDefinition": { "displayName": "E-mail address", @@ -57,7 +57,7 @@ "templateId": "setheader", "parameters": { "x-ms-apimTemplateParameter.name": "ds-user", - "x-ms-apimTemplateParameter.value": "@connectionParameters('userName', '')", + "x-ms-apimTemplateParameter.value": "@connectionParameters('username', '')", "x-ms-apimTemplateParameter.existsAction": "override", "x-ms-apimTemplate-policySection": "Request" } From fe49d50ae71967beda8719a25dcb362360664e97 Mon Sep 17 00:00:00 2001 From: KinzaBS <77412071+KinzaBS@users.noreply.github.com> Date: Fri, 22 Sep 2023 16:03:26 +0200 Subject: [PATCH 03/17] VEV-IQ connector (#2899) * VEV-IQ Custom Connector * Update Readme + PR review fix --- certified-connectors/VEV-IQ/Readme.md | 86 +++ .../VEV-IQ/apiDefinition.swagger.json | 559 ++++++++++++++++++ .../VEV-IQ/apiProperties.json | 25 + 3 files changed, 670 insertions(+) create mode 100644 certified-connectors/VEV-IQ/Readme.md create mode 100644 certified-connectors/VEV-IQ/apiDefinition.swagger.json create mode 100644 certified-connectors/VEV-IQ/apiProperties.json diff --git a/certified-connectors/VEV-IQ/Readme.md b/certified-connectors/VEV-IQ/Readme.md new file mode 100644 index 0000000000..420ff0f97d --- /dev/null +++ b/certified-connectors/VEV-IQ/Readme.md @@ -0,0 +1,86 @@ +# VEV-IQ +The Custom Connector for the VEV-IQ Charging Station Supervision Platform allows you to seamlessly integrate and retrieve data from your charging station management system into the Power Platform. This connector enables you to access transaction data, consumption records, user information, and more on a per-tenant basis. + +## Publisher: VEV PLATFORM SERVICES FRANCE + +## Prerequisites +* A VEV-IQ tenant +* A VEV-IQ account, you can get a subscription directly via [VEV](https://www.vev.com/) +* A VEV-IQ [API Key and a User API account](https://flint-cousin-851.notion.site/Generate-your-TOKEN-API-3025ff2726be4fc4a0e61aa02a50c5e7?pvs=4) + +The environment requirements are: +* A Microsoft Power Apps or Power Automate plan with custom connector feature + +## Supported Operations +The connector supports the following operations: +* `List sites`: Lists all the sites in your tenant +* `List charging stations`: Lists all the charging stations in your tenant +* `Get transactions`: Gets all transactions in your tenant +* `Get completed transactions`: Gets all completed transactions in your tenant +* `Get active transactions`: Gets all active transactions in your tenant +* `List users`: Lists all users in your tenant +* `List tags`: Lists all tags in your tenant +* `List assets`: Lists all assets in your tenant +* `List car catalogs`: List all car catalogs in your tenant +* `List car makers`: Lists all car makers in your tenant +* `List cars`: Lists all cars on your tenant +* `List site areas`: Lists all site areas in your tenant +* `Get statistics charging stations consumption`: Gets statistics charging stations consumption in your tenant +* `Get statistics charging stations inactivity`: Gets statistics charging stations inactivity in your tenant +* `Get statistics charging stations usage`: Gets statistics charging stations usage in your tenant +* `Get statistics charging station transaction`: Gets statistics charging stations transactions in your tenant +* `Get statistics users consumption`: Gets statistics users consumption in your tenant +* `Get statistics users inactivity`: Gets statistics users inactivity in your tenant +* `Get statistics users usage`: Gets statistics users usage in your tenant +* `Get statistics users transaction`: Gets statistics users transactions in your tenant +* `Get statistics users pricing`: Gets statistics users pricing in your tenant +* `Get invoices`: Gets invoices information from your tenant + + +## Obtaining Credentials +To access the API securely and retrieve a bearer token, you can use Postman, a popular API testing tool. Follow these steps to obtain a bearer token using the provided [API Sign in endpoint](https://rest.vev-iq.com/v1/auth/signin) and request body: + +Install and Open Postman: +If you don't have Postman installed, you can download it from [Postman's official website](https://www.postman.com/downloads/). Once installed, open Postman. + +Create a New Request: +Click on the "New" button in Postman to create a new request. + +Select the Request Type: +Choose the HTTP request type "POST" from the dropdown menu next to the URL input field. + +Enter the API URL: +In the URL field, enter the [API Sign in endpoint](https://rest.vev-iq.com/v1/auth/signin). + +Enter Request Body: +Click on the "Body" tab below the headers section. Choose the "raw" option and set the format to "JSON (application/json)". + +Paste the following JSON request body into the input field: +{ + "email": "api.user@domain.com", + "password": "Your-API-Password", + "acceptEula": true, + "tenant": "Your-Tenant-Name" +} + +Replace "api.user@domain.com", "Your-API-Password", and "Your-Tenant-Name" with your actual credentials and tenant information. + +Send the Request: +Click the "Send" button to submit the request to the API. + +Retrieve Bearer Token: +Once the request is sent successfully, you'll receive a response from the API. Look for the "token" field in the response body. This is the bearer token you need to authenticate subsequent requests. + +Use Bearer Token: +Copy the bearer token from the response. You can now use this token as an "Authorization" header in your subsequent API requests. + +Remember that you can retrieve bearer tokens eonly if you have a dedicated API user in the VEV-IQ environment. Please contact your administrator to do so. + +This process allows you to retrieve a bearer token using Postman, which can then be used to securely access the API endpoints in your custom connector. + +## Known Issues and Limitations +There is a Limit of 100 number of records on each Get query. +The data records you get depends on your user role and permission. + +## Deployment Instructions +Please use [these instructions](https://docs.microsoft.com/en-us/connectors/custom-connectors/paconn-cli) to deploy this connector as custom connector in Microsoft Power Automate and Power Apps. \ No newline at end of file diff --git a/certified-connectors/VEV-IQ/apiDefinition.swagger.json b/certified-connectors/VEV-IQ/apiDefinition.swagger.json new file mode 100644 index 0000000000..875f640edf --- /dev/null +++ b/certified-connectors/VEV-IQ/apiDefinition.swagger.json @@ -0,0 +1,559 @@ +{ + "swagger": "2.0", + "info": { + "version": "1.0.0", + "title": "VEV-IQ", + "description": "VEV-IQ custom connectors enables you to retrieve data from your charging infrastructure and integrate it into Microsoft tools.", + "contact": { + "name": "VEV-IQ Support", + "url": "https://www.vev.com/contact/", + "email": "kinza.benslimane@vev.com" + + } + }, + "host": "rest.vev-iq.com", + "basePath": "/", + "schemes": [ + "https" + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": { + "/client/api/Sites": { + "get": { + "summary": "List sites", + "description": "Retrieves all sites details of your dedicated tenant", + "operationId": "RetrieveSites", + "parameters": [ + { + "x-ms-summary": "Limit", + "name": "Limit", + "default": "100", + "in": "query", + "type": "string", + "required": true, + "description": "Content-Type" + } + ], + "responses": { + "default": { + "description": "default", + "schema": {} + } + } + } + }, + "/v1/api/charging-stations": { + "get": { + "summary": "List Charging Stations", + "description": "Retrive all Charging Stations of your dedicated tenant", + "operationId": "ChargingStations", + "parameters": [ + { + "x-ms-summary": "Limit", + "name": "Limit", + "default": "100", + "in": "query", + "type": "string", + "required": true, + "description": "Content-Type" + } + ], + "responses": { + "default": { + "description": "default", + "schema": {} + } + } + } + }, + "/v1/api/transactions": { + "get": { + "summary": "List all Transactions", + "description": "Retrieve all Transactions of your dedicated tenant", + "operationId": "Transactions", + "parameters": [ + { + "x-ms-summary": "Limit", + "name": "Limit", + "default": "100", + "in": "query", + "type": "string", + "required": true, + "description": "Content-Type" + } + ], + "responses": { + "default": { + "description": "default", + "schema": {} + } + } + } + }, + "/v1/api/transactions/status/completed": { + "get": { + "summary": "List all Completed Transactions", + "description": "Retrieve all Completed Transactions ", + "operationId": "TransactionsCompleted", + "parameters": [ + { + "x-ms-summary": "Limit", + "name": "Limit", + "default": "100", + "in": "query", + "type": "string", + "required": true, + "description": "Content-Type" + } + ], + "responses": { + "default": { + "description": "default", + "schema": {} + } + } + } + }, + "/v1/api/transactions/status/active": { + "get": { + "summary": "List all Active Transactions", + "description": "Retrive all Active Transactions", + "operationId": "TransactionsActive", + "parameters": [ + { + "x-ms-summary": "Limit", + "name": "Limit", + "default": "100", + "in": "query", + "type": "string", + "required": true, + "description": "Content-Type" + } + ], + "responses": { + "default": { + "description": "default", + "schema": {} + } + } + } + }, + "/v1/api/users": { + "get": { + "summary": "List all Users", + "description": "Retrive all Users", + "operationId": "Users", + "parameters": [ + { + "x-ms-summary": "Limit", + "name": "Limit", + "default": "100", + "in": "query", + "type": "string", + "required": true, + "description": "Content-Type" + } + ], + "responses": { + "default": { + "description": "default", + "schema": {} + } + } + } + }, + "/v1/api/tags": { + "get": { + "summary": "List all Tags", + "description": "Retrive all Tags", + "operationId": "Tags", + "parameters": [ + { + "x-ms-summary": "Limit", + "name": "Limit", + "default": "100", + "in": "query", + "type": "string", + "required": true, + "description": "Content-Type" + } + ], + "responses": { + "default": { + "description": "default", + "schema": {} + } + } + } + }, + "/v1/api/assets": { + "get": { + "summary": "List all Assets", + "description": "Retrieve all Assets", + "operationId": "Assets", + "parameters": [ + { + "x-ms-summary": "Limit", + "name": "Limit", + "default": "100", + "in": "query", + "type": "string", + "required": true, + "description": "Content-Type" + } + ], + "responses": { + "default": { + "description": "default", + "schema": {} + } + } + } + }, + "/v1/api/car-catalogs": { + "get": { + "summary": "List CarCatalogs", + "description": "Retrieve CarCatalogs", + "operationId": "CarCatalogs", + "parameters": [ + { + "x-ms-summary": "Limit", + "name": "Limit", + "default": "100", + "in": "query", + "type": "string", + "required": true, + "description": "Content-Type" + } + ], + "responses": { + "default": { + "description": "default", + "schema": {} + } + } + } + }, + "/v1/api/car-makers": { + "get": { + "summary": "List all CarMakers", + "description": "Retrive all CarMakers", + "operationId": "CarMakers", + "parameters": [], + "responses": { + "default": { + "description": "default", + "schema": {} + } + } + } + }, + "/v1/api/cars": { + "get": { + "summary": "List all Cars", + "description": "Retrieve all Cars", + "operationId": "Cars", + "parameters": [ + { + "x-ms-summary": "Limit", + "name": "Limit", + "default": "100", + "in": "query", + "type": "string", + "required": true, + "description": "Content-Type" + } + ], + "responses": { + "default": { + "description": "default", + "schema": {} + } + } + } + }, + "/v1/api/site-areas": { + "get": { + "summary": "List all SiteAreas", + "description": "Retrieve all SiteAreas", + "operationId": "SiteAreas", + "parameters": [ + { + "x-ms-summary": "Limit", + "name": "Limit", + "default": "100", + "in": "query", + "type": "string", + "required": true, + "description": "Content-Type" + } + ], + "responses": { + "default": { + "description": "default", + "schema": {} + } + } + } + }, + "/v1/api/statistics/charging-stations/consumption": { + "get": { + "summary": "List all Statistics Charging Station Consumption", + "description": "Retrieve all Statistics Charging Station Consumption", + "operationId": "tatisticsChargingStationConsumption", + "parameters": [ + { + "x-ms-summary": "Year", + "name": "Year", + "default": "2023", + "in": "query", + "type": "string", + "required": false, + "description": "Content-Type" + } + ], + "responses": { + "default": { + "description": "default", + "schema": {} + } + } + } + }, + "/v1/api/statistics/charging-stations/inactivity": { + "get": { + "summary": "List Statistics Charging Station Inactivity", + "description": "Retrieve Statistics Charging Station Inactivity", + "operationId": "StatisticsChargingStationInactivity", + "parameters": [ + { + "x-ms-summary": "Year", + "name": "Year", + "default": "2023", + "in": "query", + "type": "string", + "required": false, + "description": "Content-Type" + } + ], + "responses": { + "default": { + "description": "default", + "schema": {} + } + } + } + }, + "/v1/api/statistics/charging-stations/usage": { + "get": { + "summary": "List Statistics Charging Station Usage", + "description": "Retrieve Statistics Charging Station Usage", + "operationId": "StatisticsChargingStationUsage", + "parameters": [ + { + "x-ms-summary": "Year", + "name": "Year", + "default": "2023", + "in": "query", + "type": "string", + "required": false, + "description": "year" + } + ], + "responses": { + "default": { + "description": "default", + "schema": {} + } + } + } + }, + "/v1/api/statistics/charging-stations/transaction": { + "get": { + "summary": "List Statistics Charging Station Transaction", + "description": "Retrieve Statistics Charging Station Transaction", + "operationId": "StatisticsChargingStationTransaction", + "parameters": [ + { + "x-ms-summary": "Year", + "name": "Year", + "default": "2023", + "in": "query", + "type": "string", + "required": false, + "description": "Year" + } + ], + "responses": { + "default": { + "description": "default", + "schema": {} + } + } + } + }, + "/v1/api/statistics/users/consumption": { + "get": { + "summary": "List Statistics Users Consumption", + "description": "Retrieve Statistics Users Consumption", + "operationId": "StatisticsUsersConsumption", + "parameters": [ + { + "x-ms-summary": "Year", + "name": "Year", + "default": "2023", + "in": "query", + "type": "string", + "required": false, + "description": "Content-Type" + } + ], + "responses": { + "default": { + "description": "default", + "schema": {} + } + } + } + }, + "/v1/api/statistics/users/usage": { + "get": { + "summary": "List Statistics Users Usage", + "description": "Retrieve Statistics Users Usage", + "operationId": "StatisticsUsersUsage", + "parameters": [ + { + "x-ms-summary": "Year", + "name": "Year", + "default": "2023", + "in": "query", + "type": "string", + "required": false, + "description": "Content-Type" + } + ], + "responses": { + "default": { + "description": "default", + "schema": {} + } + } + } + }, + "/v1/api/statistics/users/inactivity": { + "get": { + "summary": "List Statistics Users Inactivity", + "description": "Retrieve Statistics Users Inactivity", + "operationId": "StatisticsUsersInactivity", + "parameters": [ + { + "x-ms-summary": "Year", + "name": "Year", + "default": "2023", + "in": "query", + "type": "string", + "required": false, + "description": "Content-Type" + } + ], + "responses": { + "default": { + "description": "default", + "schema": {} + } + } + } + }, + "/v1/api/statistics/users/transaction": { + "get": { + "summary": "List Statistics Users Transactions", + "description": "Retrieve Statistics Users Transactions", + "operationId": "StatisticsUsersTransactions", + "parameters": [ + { + "x-ms-summary": "Year", + "name": "Year", + "default": "2023", + "in": "query", + "type": "string", + "required": false, + "description": "Content-Type" + } + ], + "responses": { + "default": { + "description": "default", + "schema": {} + } + } + } + }, + "/v1/api/statistics/users/pricing": { + "get": { + "summary": "List Statistics Users Pricing", + "description": "Retrieve Statistics Users Pricing", + "operationId": "StatisticsUsersPricing", + "parameters": [ + { + "x-ms-summary": "Year", + "name": "Year", + "default": "2023", + "in": "query", + "type": "string", + "required": false, + "description": "Content-Type" + } + ], + "responses": { + "default": { + "description": "default", + "schema": {} + } + } + } + }, + "/v1/api/invoices": { + "get": { + "summary": "List BillingInvoices", + "description": "Retrieve BillingInvoices", + "operationId": "BillingInvoices", + "parameters": [ + { + "x-ms-summary": "Limit", + "name": "Limit", + "default": "100", + "in": "query", + "type": "string", + "required": false, + "description": "Content-Type" + } + ], + "responses": { + "default": { + "description": "default", + "schema": {} + } + } + } + } + }, + "x-ms-connector-metadata":[ + { + "propertyName": "Website", + "propertyValue": "https://www.vev.com/" + }, + { + "propertyName": "Privacy policy", + "propertyValue": "https://vev-iq.com/auth/eula" + }, + { + "propertyName": "Categories", + "propertyValue": "Business Intelligence" + } + ] +} \ No newline at end of file diff --git a/certified-connectors/VEV-IQ/apiProperties.json b/certified-connectors/VEV-IQ/apiProperties.json new file mode 100644 index 0000000000..42a376a5cc --- /dev/null +++ b/certified-connectors/VEV-IQ/apiProperties.json @@ -0,0 +1,25 @@ +{ + "properties": { + "connectionParameters": { + "api_key": { + "type": "securestring", + "uiDefinition": { + "displayName": "API Key", + "description": "The API Key for this api", + "tooltip": "Provide your API Key", + "constraints": { + "tabIndex": 2, + "clearText": false, + "required": "true" + } + } + } + }, + "iconBrandColor": "#000000", + "capabilities": [ + "actions" + ], + "publisher": "VEV-IQ", + "stackOwner": "VEV-IQ" + } +} \ No newline at end of file From 9694b1b4234dbfd2f66d08573d847bfbf4dab92a Mon Sep 17 00:00:00 2001 From: Luke Swanton Date: Fri, 22 Sep 2023 15:59:15 +0100 Subject: [PATCH 04/17] Updated DQ on Demand Connector (#2905) Co-authored-by: Luke.Swanton --- .../DQ on Demand/apiDefinition.swagger.json | 930 ++++++++++++++---- 1 file changed, 744 insertions(+), 186 deletions(-) diff --git a/certified-connectors/DQ on Demand/apiDefinition.swagger.json b/certified-connectors/DQ on Demand/apiDefinition.swagger.json index 915addb1e8..a8420c0784 100644 --- a/certified-connectors/DQ on Demand/apiDefinition.swagger.json +++ b/certified-connectors/DQ on Demand/apiDefinition.swagger.json @@ -293,7 +293,6 @@ "AuthenticateEmailProvider": { "type": "string", "enum": [ - "Betterfy", "TextMagic", "Loqate", "Fetchify", @@ -410,6 +409,212 @@ } } }, + "GetUsageV2": { + "type": "object", + "properties": { + "status": { + "description": "The HTTP Status code of the response.", + "type": "integer", + "x-ms-visibility": "advanced" + }, + "message": { + "description": "A message describing the request status.", + "type": "string", + "x-ms-visibility": "advanced" + }, + "data": { + "type": "object", + "description": "The Response object.", + "properties": { + "FilterCriteria": { + "type": "object", + "description": "The supplied filter criteria.", + "properties": { + "startDate": { + "type": "string", + "x-ms-visibility": "advanced", + "format": "date-time", + "pattern": "yyyy-MM-dd hh:mm:ss.fff", + "description": "The StartDate entered." + }, + "endDate": { + "type": "string", + "x-ms-visibility": "advanced", + "format": "date-time", + "pattern": "yyyy-MM-dd hh:mm:ss.fff", + "description": "The EndDate entered." + } + } + }, + "Results": { + "type": "array", + "description": "A List of your usage details.", + "items": { + "type": "object", + "properties": { + "providerName": { + "type": "string", + "description": "The name of the provider.", + "x-ms-visibility": "important" + }, + "usage": { + "description": "An array containing all functions for the provider and your usage for each.", + "type": "array", + "items": { + "type": "object", + "properties": { + "functionName": { + "type": "string", + "description": "The name of the function.", + "x-ms-visibility": "important" + }, + "creditsUsed": { + "type": "integer", + "format": "int64", + "description": "The number of credits you have spent on this function.", + "x-ms-visibility": "important" + }, + "creditsUsedBy": { + "type": "array", + "description": "A list of applications that have spent credits on this function and the number of credits each app has spent.", + "x-ms-visibility": "important", + "items": { + "type": "object", + "properties": { + "applicationName":{ + "type": "string", + "description": "The name of the application that consumed the credits.", + "x-ms-visibility": "important" + }, + "creditsUsed":{ + "type": "integer", + "format": "int64", + "description": "The number of credits this application has spent on this function.", + "x-ms-visibility": "important" + } + } + } + } + } + } + } + } + } + }, + "Summary":{ + "type": "array", + "description": "A List of your usage summarised by time.", + "items": { + "type": "object", + "properties": { + "periodStart":{ + "type": "string", + "format": "date-time", + "pattern": "yyyy-MM-dd hh:mm:ss.fff", + "description": "The start time of the interval.", + "x-ms-visibility": "important" + }, + "periodEnd": { + "type": "string", + "format": "date-time", + "pattern": "yyyy-MM-dd hh:mm:ss.fff", + "description": "The end time of the interval.", + "x-ms-visibility": "important" + }, + "label": { + "type": "string", + "description": "Display label for the summarised interval.", + "x-ms-visibility": "important" + }, + "creditsUsed":{ + "type": "integer", + "format": "int64", + "description": "The number of credits consumed within the interval.", + "x-ms-visibility": "important" + }, + "creditsUsedBy": { + "type": "array", + "description": "Consumption breakdown by application within the interval.", + "x-ms-visibility": "important", + "items":{ + "type": "object", + "properties": { + "applicationName":{ + "type": "string", + "description": "The name of the application that consumed the credits.", + "x-ms-visibility": "important" + }, + "creditsUsed": { + "type": "integer", + "format": "int64", + "description": "The number of credits this application consumed.", + "x-ms-visibility": "important" + } + } + } + } + } + } + } + } + } + }, + "example": { + "status": 200, + "message": "Success", + "data": { + "filterCriteria": { + "startDate": "2019-12-24 23:59:59:666", + "endDate": "2019-12-25 00:00:00:666" + }, + "results": [ + { + "providerName": "DQ Global", + "usage": [ + { + "functionName": "Classify", + "creditsUsed": 123, + "creditsUsedBy":[ + { + "applicationName": "DQ4Excel", + "creditsUsed": 123 + } + ] + }, + { + "functionName": "Derive", + "creditsUsed": 123, + "creditsUsedBy":[ + { + "applicationName": "PowerPlatform", + "creditsUsed": 123 + } + ] + } + ] + } + ], + "summary": [ + { + "periodStart": "2019-12-24 23:59:59.666", + "periodEnd": "2019-12-25 00:00:00.666", + "label": "Q4 2019", + "creditsUsed": 246, + "creditsUsedBy": [ + { + "applicationName": "DQ4Excel", + "creditsUsed": 123 + }, + { + "applicationName": "PowerPlatform", + "creditsUsed": 123 + } + ] + } + ] + } + } + }, "GetPricesOutput": { "type": "object", "properties": { @@ -1337,6 +1542,118 @@ } } }, + "/Account/Usage/v2.0": { + "x-summary": "Get Usage (V2)", + "get": { + "operationId": "UsageGetV2", + "summary": "Retrieve your usage (V2)", + "description": "Retrieve your usage statistics for each vendor function within the given time frame, broken down by consuming application. Note: Usage statistics update every 24 hours at Midnight UTC Time.", + "parameters": [ + { + "in": "query", + "name": "StartDate", + "x-example": "2019-12-24 23:59:59:666", + "type": "string", + "format": "date-time", + "pattern": "yyyy-MM-dd hh:mm:ss.fff", + "required": true, + "description": "Usage period start.", + "x-ms-summary": "Start Time (yyyy-MM-dd HH:mm:ss.fff)", + "x-ms-visibility": "important" + }, + { + "in": "query", + "name": "EndDate", + "x-example": "2019-12-25 00:00:00:666", + "type": "string", + "format": "date-time", + "pattern": "yyyy-MM-dd hh:mm:ss.fff", + "required": true, + "description": "Usage period end.", + "x-ms-summary": "End Time (yyyy-MM-dd HH:mm:ss.fff)", + "x-ms-visibility": "important" + }, + { + "in": "query", + "name": "SummariseBy", + "type": "string", + "x-example": "Quarter", + "enum": ["Day","Month","Year","Quarter"], + "required": false, + "description": "Group credit usage by interval within the given period.", + "x-ms-summary": "Summarise By", + "x-ms-visibility": "important" + } + ], + "responses": { + "200": { + "description": "Successful Request.", + "schema": { + "$ref": "#/definitions/GetUsageV2" + }, + "examples": { + "application/json": { + "status": 200, + "message": "Success", + "data": { + "filterCriteria": { + "startDate": "2019-12-24 23:59:59:666", + "endDate": "2019-12-25 00:00:00:666" + }, + "results": [ + { + "providerName": "DQ Global", + "usage": [ + { + "functionName": "Classify", + "creditsUsed": 123, + "creditsUsedBy": + [ + { + "applicationName": "DQ4Excel", + "creditsUsed": 123 + } + ] + }, + { + "functionName": "Derive", + "creditsUsed": 123, + "creditsUsedBy": + [ + { + "applicationName": "PowerPlatform", + "creditsUsed": 123 + } + ] + } + ] + } + ], + "summary": [ + { + "periodStart": "2019-12-24 23:59:59.666", + "periodEnd": "2019-12-25 00:00:00.666", + "label": "Q4 2019", + "creditsUsed": 246, + "creditsUsedBy": [ + { + "applicationName": "DQ4Excel", + "creditsUsed": 123 + }, + { + "applicationName": "PowerPlatform", + "creditsUsed": 123 + } + ] + } + ] + } + } + } + } + } + } + }, "/Account/Prices": { "x-summary": "Get Prices", "get": { @@ -1382,7 +1699,6 @@ "get": { "operationId": "CaseSingular", "summary": "Case", - "description": "Alter the casing of your data.", "parameters": [ { @@ -1454,7 +1770,6 @@ "operationId": "ClassifyGet", "summary": "Classify", "description": "Identify extra information about a piece of data. E.g. Brian or Sven is a person name. Road, Strasse, Rue are address elements. Ltd, LLC are Company legal suffixes.", - "parameters": [ { "in": "query", @@ -1565,8 +1880,7 @@ "x-summary": "Compare", "get": { "operationId": "CompareGet", - "summary": "Compare", - + "summary": "Compare", "description": "Score the similarity between two values using one of the available algorithms, including: Levenshtein, Jaro, JaroWinkler and more...", "parameters": [ { @@ -1634,8 +1948,7 @@ "x-summary": "Email", "get": { "operationId": "EmailCongruenceGet", - "summary": "Congruence Email", - + "summary": "Congruence Email", "description": "Check if an Email address matches the Contact details.", "parameters": [ { @@ -1693,8 +2006,7 @@ "x-summary": "Country", "get": { "operationId": "CountryCongruenceGet", - "summary": "Congruence Country", - + "summary": "Congruence Country", "description": "Check if a value is from the country you expect.", "parameters": [ { @@ -1757,8 +2069,7 @@ "x-summary": "Salutation", "get": { "operationId": "SalutationCongruenceGet", - "summary": "Congruence Salutation", - + "summary": "Congruence Salutation", "description": "Check if the Salutation is of the same gender as the name.", "parameters": [ { @@ -1826,7 +2137,6 @@ "get": { "operationId": "DeriveGenderGet", "summary": "Derive Gender", - "description": "Derive the Gender of a person using their first name.", "parameters": [ { @@ -1893,7 +2203,6 @@ "get": { "operationId": "DeriveCityGet", "summary": "Derive CountryFromCity", - "description": "Retrieve a list of Countries that have the placename supplied.", "parameters": [ { @@ -1984,7 +2293,6 @@ "get": { "operationId": "DerivePostCodeGet", "summary": "Derive FromPostalCode", - "description": "Return Information pertaining to the supplied PostCode, Such as: Latitude & Longitude.", "parameters": [ { @@ -2067,7 +2375,6 @@ "get": { "operationId": "DeriveEmailGet", "summary": "Derive EmailType", - "description": "Derive the Domain and Mailbox type. I.E.is it a business email? or a personal email?", "parameters": [ { @@ -2134,7 +2441,6 @@ "get": { "operationId": "DeriveISOGet", "summary": "Derive Country", - "description": "Derive a country from your supplied data.", "parameters": [ { @@ -2313,7 +2619,6 @@ "operationId": "FormatEmailGet", "summary": "Format Email", "description": "Format your email address. A common example is when an email is coped from Outlook it will return `Example ` and we will convert that to `example@example.com`.", - "parameters": [ { "in": "query", @@ -2349,7 +2654,6 @@ "operationId": "FormatPostCodeGet", "summary": "Format PostCode", "description": "Format your Postcode so its syntactically valid for the country. I.E. `SW1A1AA` to `SW1A 1AA`", - "parameters": [ { "in": "query", @@ -2395,7 +2699,6 @@ "operationId": "FormatE164Get", "summary": "Format PhoneE164", "description": "Format your phone number in the E.164 syntax. E.G. `+448457909090`", - "parameters": [ { "in": "query", @@ -2441,7 +2744,6 @@ "operationId": "FormatInternationalGet", "summary": "Format Phone International", "description": "Format your phone number in International syntax. E.G. `+44 845 790 9090`", - "parameters": [ { "in": "query", @@ -2487,7 +2789,6 @@ "operationId": "FormatNationalGet", "summary": "Format Phone National", "description": "Format your phone number in National syntax. E.G. `0845 790 9090`", - "parameters": [ { "in": "query", @@ -2533,7 +2834,6 @@ "operationId": "FormatRFC3966Get", "summary": "Format PhoneRFC3966", "description": "Format your phone number in RFC3966 syntax. E.G. `tel:+44-845-790-9090`", - "parameters": [ { "in": "query", @@ -2579,7 +2879,6 @@ "operationId": "FormatURLGet", "summary": "Format URL", "description": "Ensure all of your URLs are in using the same Protocols and correct common mistakes.", - "parameters": [ { "in": "query", @@ -2624,7 +2923,6 @@ "post": { "operationId": "GeneratePattern", "summary": "Generate Pattern", - "description": "Generate a Pattern representation of your data. I.E. `Example123` -> `Aaaaaaa999`", "parameters": [ { @@ -2711,7 +3009,6 @@ "get": { "operationId": "GenerateTokenGet", "summary": "Generate Token", - "description": "Generate a phonetic token of your data. Example (Using DQFonetix) Xerox = YQA, Xeroks = YQA", "parameters": [ { @@ -2787,7 +3084,6 @@ "operationId": "ParsePhoneGet", "summary": "Parse Phone", "description": "Split a Phonenumber into its component parts: Country, Number, Prefix, Type.", - "parameters": [ { "in": "query", @@ -2890,7 +3186,6 @@ "operationId": "ParseEmailGet", "summary": "Parse Email", "description": "Split an Email into its component parts: MailBox, Domain, TLD/", - "parameters": [ { "in": "query", @@ -2969,7 +3264,6 @@ "operationId": "ParseURLGet", "summary": "Parse URL", "description": "Split a URL into its component parts: Host, Scheme, Port, Path.", - "parameters": [ { "in": "query", @@ -3060,7 +3354,6 @@ "post": { "operationId": "Scoring", "summary": "Scoring", - "description": "Score records by choosing from a large set of record scoring options; customize your group weightings, score misaligned data and select from various data specific scoring rules.", "parameters": [ { @@ -3624,7 +3917,6 @@ "get": { "operationId": "TransformGet", "summary": "Transform", - "description": "Transform data (Abbreviate, Elaborate, Exclude or Normalize) in 5 spoken languages. Choose from 11 different transformation libraries including: Business, Countries, First Names and Addressing... e.g. Abbreviate country transform (United Kingdom to UK).", "parameters": [ { @@ -3721,7 +4013,6 @@ "post": { "operationId": "SequenceTransform", "summary": "Sequence Transform", - "description": "Perform multiple transformations in a single request. For Example; Elaborate Numbers and Abbreviate Addresses.", "parameters": [ { @@ -3919,7 +4210,6 @@ "get": { "operationId": "ValidateEmailGet", "summary": "Validate Email", - "description": "Check the syntactical validity of an Email Address.", "parameters": [ { @@ -3955,7 +4245,6 @@ "get": { "operationId": "ValidatePostCodeGet", "summary": "Validate PostCode", - "description": "Check the syntactical validity of a PostCode.", "parameters": [ { @@ -4001,7 +4290,6 @@ "get": { "operationId": "ValidateURLGet", "summary": "Validate URL", - "description": "Check the syntactical validity of a URL.", "parameters": [ { @@ -4037,7 +4325,6 @@ "get": { "operationId": "ValidatePhoneGet", "summary": "Validate Phone", - "description": "Check the syntactical validity of a PhoneNumber.", "parameters": [ { @@ -4083,7 +4370,6 @@ "get": { "operationId": "ValidateDateTimeGet", "summary": "Validate DateTime", - "description": "Check if your DateTime values are in the syntax you expect.", "parameters": [ { @@ -4129,7 +4415,6 @@ "get": { "operationId": "ValidatePlusEmailGet", "summary": "ValidatePlus Email", - "description": "Check the syntactical validity of an Email Address.", "parameters": [ { @@ -4202,7 +4487,6 @@ "get": { "operationId": "ValidatePlusPostCodeGet", "summary": "ValidatePlus PostCode", - "description": "Check the syntactical validity of a PostCode.", "parameters": [ { @@ -4285,7 +4569,6 @@ "get": { "operationId": "ValidatePlusURLGet", "summary": "ValidatePlus URL", - "description": "Check the syntactical validity of a URL.", "parameters": [ { @@ -4358,7 +4641,6 @@ "get": { "operationId": "VerifyAddressGet", "summary": "Verify Address", - "description": "Check your address is deliverable by verifying it against a set of reference data.", "parameters": [ { @@ -4366,12 +4648,15 @@ "name": "Provider", "x-example": "Loqate", "required": true, + "default": "Default", "type": "string", "enum": [ - "Loqate" + "Default", + "Loqate", + "Sagacity" ], "description": "The Provider to use.", - "x-ms-visibility": "important", + "x-ms-visibility": "advanced", "x-ms-summary": "Provider", "x-ms-url-encoding": "single" }, @@ -4607,7 +4892,6 @@ "get": { "operationId": "SearchAddressFind", "summary": "SearchAddress - Find", - "description": "Return a list of possible address matches.", "parameters": [ { @@ -4615,15 +4899,17 @@ "name": "Provider", "x-example": "Loqate", "required": true, + "default": "Default", "type": "string", "enum": [ + "Default", "Loqate", "Fetchify", "GetAddressIO", "AFD" ], "description": "The Provider to use.", - "x-ms-visibility": "important", + "x-ms-visibility": "advanced", "x-ms-summary": "Provider", "x-ms-url-encoding": "single" }, @@ -4722,7 +5008,6 @@ "get": { "operationId": "SearchAddressRetrieve", "summary": "SearchAddress - Retrieve", - "description": "Return the address details using the ID from the Find call.", "parameters": [ { @@ -4730,15 +5015,17 @@ "name": "Provider", "x-example": "Loqate", "required": true, + "default": "Default", "type": "string", "enum": [ + "Default", "Loqate", "Fetchify", "GetAddressIO", "AFD" ], "description": "The Provider to use.", - "x-ms-visibility": "important", + "x-ms-visibility": "advanced", "x-ms-summary": "Provider", "x-ms-url-encoding": "single" }, @@ -4888,25 +5175,26 @@ } } }, - "/Suppress/Deceased/{Provider}": { - "x-summary": "Suppress - Deceased", + "/Suppress/Address/Deceased/{Provider}": { + "x-summary": "Suppress Address - Deceased", "get": { "operationId": "SuppressDeceased", - "summary": "Suppress - Deceased", - - "description": "Check whether a person has died.\\n\\nNote: At present this endpoint only supports `GB` data.", + "summary": "Suppress Address - Deceased", + "description": "Check whether a person has died. Note: At present this endpoint only supports `GB` data.", "parameters": [ { "in": "path", "name": "Provider", - "x-example": "REaDGroup", + "x-example": "Sagacity", "required": true, + "default": "Default", "type": "string", "enum": [ - "REaDGroup" + "Default", + "Sagacity" ], "description": "The Provider to use.", - "x-ms-visibility": "important", + "x-ms-visibility": "advanced", "x-ms-summary": "Provider", "x-ms-url-encoding": "single" }, @@ -5049,78 +5337,9 @@ "x-nullable": true, "description": "Confident percentage that your record should be suppressed." }, - "newAddress": { - "x-ms-visibility": "important", + "additionalInfo": { "type": "object", - "x-nullable": true, - "description": "The New address (if known).", - "properties": { - "title": { - "x-ms-visibility": "important", - "type": "string", - "x-nullable": true, - "description": "Title / Salutation." - }, - "forename": { - "x-ms-visibility": "important", - "type": "string", - "x-nullable": true, - "description": "First Name." - }, - "surname": { - "x-ms-visibility": "important", - "type": "string", - "x-nullable": true, - "description": "Last Name." - }, - "moveDate": { - "x-ms-visibility": "important", - "type": "string", - "format": "date-time", - "x-nullable": true, - "description": "Move Date." - }, - "address1": { - "x-ms-visibility": "important", - "type": "string", - "x-nullable": true, - "description": "Address Line1." - }, - "address2": { - "x-ms-visibility": "important", - "type": "string", - "x-nullable": true, - "description": "Address Line2." - }, - "address3": { - "x-ms-visibility": "important", - "type": "string", - "x-nullable": true, - "description": "Address Line3." - }, - "town": { - "x-ms-visibility": "important", - "type": "string", - "x-nullable": true, - "description": "Address Town." - }, - "county": { - "x-ms-visibility": "important", - "type": "string", - "x-nullable": true, - "description": "Address County." - }, - "postcode": { - "x-ms-visibility": "important", - "type": "string", - "x-nullable": true, - "description": "Address Postcode." - } - } - }, - "additionalInfo": { - "type": "object", - "x-ms-visibility": "advanced", + "x-ms-visibility": "advanced", "x-nullable": true, "additionalProperties": true } @@ -5136,7 +5355,6 @@ { "status": "NotFound", "confidence": 0, - "newAddress": null, "additionalInfo": null } ] @@ -5146,25 +5364,26 @@ } } }, - "/Suppress/GoneAway/{Provider}": { - "x-summary": "Suppress - GoneAway", + "/Suppress/Address/GoneAway/{Provider}": { + "x-summary": "Suppress Address - GoneAway", "get": { "operationId": "SuppressGoneAway", - "summary": "Suppress - GoneAway", - - "description": "Check whether a person has moved and retrieve their new address (if it is known) Note: At present this endpoint only supports `GB` data.", + "summary": "Suppress Address - GoneAway", + "description": "Check wether a person has relocated and no longer lives at the address. Note: At present this endpoint only supports `GB` data.", "parameters": [ { "in": "path", "name": "Provider", - "x-example": "REaDGroup", + "x-example": "Sagacity", "required": true, + "default": "Default", "type": "string", "enum": [ - "REaDGroup" + "Default", + "Sagacity" ], "description": "The Provider to use.", - "x-ms-visibility": "important", + "x-ms-visibility": "advanced", "x-ms-summary": "Provider", "x-ms-url-encoding": "single" }, @@ -5267,16 +5486,195 @@ "description": "A Country Identifier (GB, GBR, United Kingdom, etc) for the address to check.", "x-ms-visibility": "important", "x-ms-summary": "Country Identifier" + } + ], + "responses": { + "200": { + "description": "Successful Request.", + "schema": { + "type": "object", + "properties": { + "status": { + "description": "The HTTP Status code of the response.", + "type": "integer", + "x-ms-visibility": "advanced" + }, + "message": { + "description": "A message describing the request status.", + "type": "string", + "x-ms-visibility": "advanced" + }, + "data": { + "description": "The response.", + "type": "object", + "properties": { + "status": { + "x-ms-visibility": "important", + "type": "string", + "enum": [ + "Suppressed", + "Suspect", + "NotFound" + ], + "x-nullable": true, + "description": "Suppression Status based on the Confidence percentage." + }, + "confidence": { + "x-ms-visibility": "important", + "type": "number", + "format": "double", + "x-nullable": true, + "description": "Confident percentage that your record should be suppressed." + }, + "additionalInfo": { + "type": "object", + "x-ms-visibility": "advanced", + "x-nullable": true, + "additionalProperties": true + } + } + } + } + }, + "examples": { + "application/json": { + "status": 200, + "message": "success", + "data": [ + { + "status": "Suppressed", + "confidence": 100, + "additionalInfo": null + } + ] + } + } + } + } + } + }, + "/Suppress/Address/Relocated/{Provider}": { + "x-summary": "Suppress Address - Relocated", + "get": { + "operationId": "SuppressRelocated", + "summary": "Suppress Address - Relocated", + "description": "Check whether a person has moved and retrieve their new address Note: At present this endpoint only supports `GB` data.", + "parameters": [ + { + "in": "path", + "name": "Provider", + "x-example": "Sagacity", + "required": true, + "default": "Default", + "type": "string", + "enum": [ + "Default", + "Sagacity" + ], + "description": "The Provider to use.", + "x-ms-visibility": "advanced", + "x-ms-summary": "Provider", + "x-ms-url-encoding": "single" }, { "in": "query", - "name": "ReturnNewAddress", - "x-example": false, + "name": "Title", + "x-example": "Mr", + "required": false, + "type": "string", + "description": "Salutation of the person to check.", + "x-ms-visibility": "important", + "x-ms-summary": "Title" + }, + { + "in": "query", + "name": "FirstName", + "x-example": "David", + "required": false, + "type": "string", + "description": "First Name of the person to check.", + "x-ms-visibility": "important", + "x-ms-summary": "First Name" + }, + { + "in": "query", + "name": "LastName", + "x-example": "Cameron", "required": true, - "type": "boolean", - "description": "If the New address is known, should it be returned?", + "type": "string", + "description": "Last Name of the person to check.", "x-ms-visibility": "important", - "x-ms-summary": "Return New Address?" + "x-ms-summary": "Last Name" + }, + { + "in": "query", + "name": "Line1", + "x-example": "10 Downing Street", + "required": false, + "type": "string", + "description": "Address Line 1 of the person to check.", + "x-ms-visibility": "important", + "x-ms-summary": "Line 1" + }, + { + "in": "query", + "name": "Line2", + "x-example": "", + "required": false, + "type": "string", + "description": "Address Line 2 of the person to check.", + "x-ms-visibility": "important", + "x-ms-summary": "Line 2" + }, + { + "in": "query", + "name": "Line3", + "x-example": "", + "required": false, + "type": "string", + "description": "Address Line 3 of the person to check.", + "x-ms-visibility": "important", + "x-ms-summary": "Line 3" + }, + { + "in": "query", + "name": "Town", + "x-example": "London", + "required": false, + "type": "string", + "description": "Address Town of the person to check.", + "x-ms-visibility": "important", + "x-ms-summary": "Town" + }, + { + "in": "query", + "name": "County", + "x-example": "", + "required": false, + "type": "string", + "description": "Address County of the person to check.", + "x-ms-visibility": "important", + "x-ms-summary": "County" + }, + { + "in": "query", + "name": "Postcode", + "x-example": "SW1A 2AA", + "required": true, + "type": "string", + "description": "Address PostalCode of the person to check.", + "x-ms-visibility": "important", + "x-ms-summary": "Postal Code" + }, + { + "in": "query", + "name": "ISO2", + "x-example": "GB", + "required": true, + "type": "string", + "description": "A Country Identifier (GB, GBR, United Kingdom, etc) for the address to check.", + "x-ms-visibility": "important", + "x-ms-summary": "Country Identifier" } ], "responses": { @@ -5414,30 +5812,223 @@ } } }, + "/Suppress/Phone/Personal/{Provider}": { + "x-summary": "Suppress Phone - Personal", + "get": { + "operationId": "SuppressPhonePersonal", + "summary": "Suppress Phone - Personal", + "description": "Check whether a Personal phone number is contained within a suppression list and as such should not be called. Note: At present this endpoint only supports `GB` data.", + "parameters": [ + { + "in": "path", + "name": "Provider", + "x-example": "Sagacity", + "required": true, + "default": "Default", + "type": "string", + "enum": [ + "Default", + "TPSChecker", + "Sagacity" + ], + "description": "The Provider to use.", + "x-ms-visibility": "advanced", + "x-ms-summary": "Provider", + "x-ms-url-encoding": "single" + }, + { + "in": "query", + "name": "Input", + "x-example": "0123456789", + "required": true, + "type": "string", + "description": "The phone number to check.", + "x-ms-visibility": "important", + "x-ms-summary": "Phone Number" + }, + { + "in": "query", + "name": "CountryIdentifier", + "x-example": "GB", + "required": true, + "type": "string", + "description": "A Country Identifier (GB, GBR, United Kingdom, etc) for the suppression list to check.", + "x-ms-visibility": "important", + "x-ms-summary": "Country Identifier" + } + ], + "responses": { + "200": { + "description": "Successful Request.", + "schema": { + "type": "object", + "properties": { + "status": { + "description": "The HTTP Status code of the response.", + "type": "integer", + "x-ms-visibility": "advanced" + }, + "message": { + "description": "A message describing the request status.", + "type": "string", + "x-ms-visibility": "advanced" + }, + "data": { + "description": "The response.", + "type": "object", + "properties": { + "result": { + "x-ms-visibility": "important", + "type": "boolean", + "description": "Boolean response for if the supplied phone number was found on a suppression list." + }, + "additionalInfo": { + "type": "object", + "x-ms-visibility": "advanced", + "x-nullable": true, + "additionalProperties": true + } + } + } + } + }, + "examples": { + "application/json": { + "status": 200, + "message": "success", + "data": [ + { + "result": true, + "additionalInfo": null + } + ] + } + } + } + } + } + }, + "/Suppress/Phone/Corporate/{Provider}": { + "x-summary": "Suppress Phone - Corporate", + "get": { + "operationId": "SuppressPhoneCorporate", + "summary": "Suppress Phone - Corporate", + "description": "Check whether a Corporate / Business phone number is contained within a suppression list and as such should not be called. Note: At present this endpoint only supports `GB` data.", + "parameters": [ + { + "in": "path", + "name": "Provider", + "x-example": "Sagacity", + "required": true, + "default": "Default", + "type": "string", + "enum": [ + "Default", + "TPSChecker", + "Sagacity" + ], + "description": "The Provider to use.", + "x-ms-visibility": "advanced", + "x-ms-summary": "Provider", + "x-ms-url-encoding": "single" + }, + { + "in": "query", + "name": "Input", + "x-example": "0123456789", + "required": true, + "type": "string", + "description": "The phone number to check.", + "x-ms-visibility": "important", + "x-ms-summary": "Phone Number" + }, + { + "in": "query", + "name": "CountryIdentifier", + "x-example": "GB", + "required": true, + "type": "string", + "description": "A Country Identifier (GB, GBR, United Kingdom, etc) for the suppression list to check.", + "x-ms-visibility": "important", + "x-ms-summary": "Country Identifier" + } + ], + "responses": { + "200": { + "description": "Successful Request.", + "schema": { + "type": "object", + "properties": { + "status": { + "description": "The HTTP Status code of the response.", + "type": "integer", + "x-ms-visibility": "advanced" + }, + "message": { + "description": "A message describing the request status.", + "type": "string", + "x-ms-visibility": "advanced" + }, + "data": { + "description": "The response.", + "type": "object", + "properties": { + "result": { + "x-ms-visibility": "important", + "type": "boolean", + "description": "Boolean response for if the supplied phone number was found on a suppression list." + }, + "additionalInfo": { + "type": "object", + "x-ms-visibility": "advanced", + "x-nullable": true, + "additionalProperties": true + } + } + } + } + }, + "examples": { + "application/json": { + "status": 200, + "message": "success", + "data": [ + { + "result": true, + "additionalInfo": null + } + ] + } + } + } + } + } + }, "/Authenticate/Email/{Provider}": { "x-summary": "Authenticate Email", "get": { "operationId": "AuthenticateEmailGet", "summary": "Authenticate Email", - - "description": "Truly confirm if your email is authentic and will deliver. \\n\\nNote: `Betterfy` only support business email addresses and will not check free email providers such as `hotmail`, `gmail`, etc.", + "description": "Truly confirm if your email is authentic and will deliver.", "parameters": [ { "in": "path", "name": "Provider", "x-example": "GamaLogic", "required": true, + "default": "Default", "type": "string", "enum": [ - "Betterfy", + "Default", "TextMagic", "Loqate", "Fetchify", "Gamalogic", - "AFD" + "AFD", + "Webbula" ], "description": "The Provider to use.", - "x-ms-visibility": "important", + "x-ms-visibility": "advanced", "x-ms-summary": "Provider", "x-ms-url-encoding": "single" }, @@ -5542,7 +6133,6 @@ "get": { "operationId": "AuthenticatePhoneGet", "summary": "Authenticate Phone", - "description": "Truly confirm if your phonenumber is authentic and will dial.", "parameters": [ { @@ -5550,15 +6140,17 @@ "name": "Provider", "x-example": "Loqate", "required": true, + "default": "Default", "type": "string", "enum": [ + "Default", "TextMagic", "Loqate", "Fetchify", "AFD" ], "description": "The Provider to use.", - "x-ms-visibility": "important", + "x-ms-visibility": "advanced", "x-ms-summary": "Provider", "x-ms-url-encoding": "single" }, @@ -5608,7 +6200,8 @@ "enum": [ "Mobile", "Landline", - "VOIP" + "VOIP", + "Unknown" ], "description": "The Type of number provided.", "x-ms-visibility": "important" @@ -5672,7 +6265,6 @@ "get": { "operationId": "StringExtIsAllUpper", "summary": "IsAllUpper", - "description": "Check if a value is comprised only of upper case letters.", "parameters": [ { @@ -5708,7 +6300,6 @@ "get": { "operationId": "StringExtIsAllLower", "summary": "IsAllLower", - "description": "Check if a value is comprised only of lower case letters.", "parameters": [ { @@ -5744,7 +6335,6 @@ "get": { "operationId": "StringExtIsMixedCase", "summary": "IsMixedCase", - "description": "Check if a value is comprised only of upper case and lower case letters.", "parameters": [ { @@ -5780,7 +6370,6 @@ "get": { "operationId": "StringExtIsAlphaNumeric", "summary": "IsAlphaNumeric", - "description": "Check if a value is comprised of letters and/or numbers.", "parameters": [ { @@ -5816,7 +6405,6 @@ "get": { "operationId": "StringExtIsNumeric", "summary": "IsNumeric", - "description": "Check if a value is comprised only of numbers.", "parameters": [ { @@ -5852,7 +6440,6 @@ "get": { "operationId": "StringExtIsISO4217", "summary": "IsISO4217CurrencyCode", - "description": "Check if a value is a valid ISO4217 code. I.E. GBP, USD, EUR, etc.", "parameters": [ { @@ -5889,7 +6476,6 @@ "operationId": "StringExtIsISO2", "summary": "IsISO2Code", "description": "Check if a value is a valid ISO3166 Alpha-2 country code. I.E.GBP, UK, FR, ES, etc.", - "parameters": [ { "in": "query", @@ -5925,7 +6511,6 @@ "operationId": "StringExtIsISO3", "summary": "IsISO3Code", "description": "Check if a value is a valid ISO3166 Alpha-3 country code. I.E.GBR, USA, FRA, etc.", - "parameters": [ { "in": "query", @@ -5960,7 +6545,6 @@ "get": { "operationId": "StringExtRemoveLeading", "summary": "RemoveLeading", - "description": "Remove the specified string from the start of a value.", "parameters": [ { @@ -6018,7 +6602,6 @@ "operationId": "StringExtRemoveChars", "summary": "RemoveCharacters", "description": "Remove the specified character type from the input.", - "parameters": [ { "in": "query", @@ -6080,7 +6663,6 @@ "get": { "operationId": "StringExtRemoveSingleWords", "summary": "Remove Single Character Words", - "description": "Remove all single characters from the input I.E. `This is a test` -> `This is test`", "parameters": [ { @@ -6117,7 +6699,6 @@ "operationId": "StringExtReplaceRepeatingText", "summary": "Replace Adjacent Repeating Text", "description": "Check and replace repeated neighbouring characters.", - "parameters": [ { "in": "query", @@ -6162,7 +6743,6 @@ "get": { "operationId": "StringExtReplaceEndsWith", "summary": "Replace If EndsWith", - "description": "Check the end of the supplied input for a value, if found replace the found value with the specified replacement value.", "parameters": [ { @@ -6218,7 +6798,6 @@ "get": { "operationId": "StringExtReplaceStartsWith", "summary": "Replace If StartsWith", - "description": "Check the start of the supplied input for a value, if found replace the found value with the specified replacement value.", "parameters": [ { @@ -6274,7 +6853,6 @@ "get": { "operationId": "StringExtStringToBinary", "summary": "String To Binary", - "description": "Convert a string value into its Binary equivalent.", "parameters": [ { @@ -6310,7 +6888,6 @@ "get": { "operationId": "StringExtBinaryToString", "summary": "Binary To String", - "description": "This will convert a Binary value into its string equivalent.", "parameters": [ { @@ -6346,7 +6923,6 @@ "get": { "operationId": "StringExtStringToHex", "summary": "String To Hex", - "description": "Convert a string value into its Hex equivalent.", "parameters": [ { @@ -6382,7 +6958,6 @@ "get": { "operationId": "StringExtHexToString", "summary": "Hex To String", - "description": "Convert a Hex input into its string equivalent.", "parameters": [ { @@ -6418,7 +6993,6 @@ "get": { "operationId": "StringExtReverse", "summary": "Reverse", - "description": "Reverse a string value. I.E. `example` -> `elpmaxe`", "parameters": [ { @@ -6454,7 +7028,6 @@ "get": { "operationId": "StringExtNormWhiteSpace", "summary": "Normalize WhiteSpace", - "description": "Convert whitespace within a string into a single space.", "parameters": [ { @@ -6490,7 +7063,6 @@ "get": { "operationId": "StringExtNormPhone", "summary": "Normalize AlphaNumeric Phone", - "description": "Convert letters into numbers using a phone keypad. I.E. `1-800-flowers` -> `1-800-3569377`", "parameters": [ { @@ -6526,7 +7098,6 @@ "get": { "operationId": "StringExtCollapseRepeatedChars", "summary": "Collapse Adjacent Repeated Characters", - "description": "The word `Silly` would be reduced to `Sily` if the maximum repeat was set to 1, as the `l` is repeated once. However, The word `Silly` would remain unchanged if the maximum repeat was set to 2, as the `l` is not repeated more than once. Inversely, The word `Global` would remain the same regardless of the maximum repeat as the `l` is repeated, but not consecutively.", "parameters": [ { @@ -6543,7 +7114,7 @@ "in": "query", "name": "collapseNumerics", "x-example": true, - "required": false, + "required": true, "type": "boolean", "description": "Include Numbers in the check?", "x-ms-visibility": "important", @@ -6582,7 +7153,6 @@ "get": { "operationId": "StringExtCollapseRepeatedType", "summary": "Collapse Adjacent Repeated Type", - "description": "Check and replace repeated neighbouring characters of the same type. I.E.`Test$$££` -> `Test$£` Note: Both the $ and the £ are counted as a symbol, but they are not the same character so did not get collapsed.", "parameters": [ { @@ -6653,7 +7223,6 @@ "get": { "operationId": "StringExtRemoveStopWords", "summary": "Remove StopWords", - "description": "Filter out rudimentary ENGLISH stop words E.G. a, about, after and many more.", "parameters": [ { @@ -6689,7 +7258,6 @@ "get": { "operationId": "StringExtRetainChars", "summary": "Retain Characters", - "description": "This will replace all characters in the supplied input with the replacement character, except the ones you have specified to keep.", "parameters": [ { @@ -6745,7 +7313,6 @@ "get": { "operationId": "StringExtExtractChars", "summary": "Extract Characters", - "description": "Extract a given number of characters from the start or end of a string.", "parameters": [ { @@ -6805,7 +7372,6 @@ "get": { "operationId": "StringExtExtractWords", "summary": "Extract Words", - "description": "Extract a given number of words from the start or end of a string.", "parameters": [ { @@ -6866,7 +7432,6 @@ "operationId": "StringExtRemoveHTML", "summary": "RemoveHTML", "description": "Remove all HTML Tags from the Input.", - "parameters": [ { "in": "query", @@ -6901,7 +7466,6 @@ "get": { "operationId": "StringExtEndsWith", "summary": "EndsWith", - "description": "Check if a value ends in with a specific string.", "parameters": [ { @@ -6947,7 +7511,6 @@ "get": { "operationId": "StringExtStartsWith", "summary": "StartsWith", - "description": "Check if a value starts with a specific string.", "parameters": [ { @@ -6993,7 +7556,6 @@ "get": { "operationId": "StringExtEnsureEndsWith", "summary": "Ensure EndsWith", - "description": "Check if your value ends with the desired string, if it does not it will be appended.", "parameters": [ { @@ -7008,7 +7570,7 @@ }, { "in": "query", - "name": "suffix", + "name": "checkFor", "x-example": "input", "required": true, "type": "string", @@ -7039,7 +7601,6 @@ "get": { "operationId": "StringExtEnsureStartEndsWith", "summary": "Ensure Starts and Ends With", - "description": "Check if your value both starts with and ends with the desired string, and if not it will be prepended and or appended.", "parameters": [ { @@ -7054,7 +7615,7 @@ }, { "in": "query", - "name": "topAndTail", + "name": "checkFor", "x-example": "input", "required": true, "type": "string", @@ -7085,7 +7646,6 @@ "get": { "operationId": "StringExtEnsureStartsWith", "summary": "Ensure StartsWith", - "description": "Check if your value starts with the desired string, if not it will be prepended.", "parameters": [ { @@ -7100,7 +7660,7 @@ }, { "in": "query", - "name": "prefix", + "name": "checkFor", "x-example": "input", "required": true, "type": "string", @@ -7131,7 +7691,6 @@ "get": { "operationId": "StringExtStartWithType", "summary": "Starts With Type", - "description": "Check if the supplied value starts with the desired character type.", "parameters": [ { @@ -7192,7 +7751,6 @@ "get": { "operationId": "StringExtEndsWithType", "summary": "Ends With Type", - "description": "Check if the supplied value ends with the desired character type.", "parameters": [ { From ed7766a117a62e0f379da871b30ad71ee4b3f8c5 Mon Sep 17 00:00:00 2001 From: Nicholas Hance Date: Fri, 22 Sep 2023 11:03:44 -0400 Subject: [PATCH 05/17] WPForms by reenhanced (Certified Publisher) - initial release (#2961) * Gravty Forms by reenhanced initial release * Update readme.md for expectations * Adds Power Form 7 * WooCommerce v1.0 pre-release * Readme updates for WooCommerce connector * Title fix: WooCommerce * url fix * Includes updates requested by Automattic * Cannot modify apiProperties * Implement changes requested by @v-eisljami * V2.0.0 release WooCommerce plugin * WooCommerce: Resolves issue with dynamic schema for get request * WooCommerce: Update brand icon color * WPForms by reenhanced --- .../apiDefinition.swagger.json | 424 ++++++++++++++++++ .../WPForms by reenhanced/apiProperties.json | 83 ++++ .../WPForms by reenhanced/readme.md | 33 ++ 3 files changed, 540 insertions(+) create mode 100644 certified-connectors/WPForms by reenhanced/apiDefinition.swagger.json create mode 100644 certified-connectors/WPForms by reenhanced/apiProperties.json create mode 100644 certified-connectors/WPForms by reenhanced/readme.md diff --git a/certified-connectors/WPForms by reenhanced/apiDefinition.swagger.json b/certified-connectors/WPForms by reenhanced/apiDefinition.swagger.json new file mode 100644 index 0000000000..b00a49aba5 --- /dev/null +++ b/certified-connectors/WPForms by reenhanced/apiDefinition.swagger.json @@ -0,0 +1,424 @@ +{ + "swagger": "2.0", + "info": { + "version": "1.0", + "title": "WPForms by Reenhanced LLC", + "description": "Connect your WordPress forms powered by WPForms to the Power Platform.", + "contact": { + "name": "Reenhanced Team", + "url": "https://www.reehanced.com", + "email": "support@reenhanced.com" + } + }, + "host": "we.buildbettersoftware.com", + "basePath": "/wpforms", + "schemes": ["https"], + "consumes": [], + "produces": [], + "paths": { + "/resources": { + "get": { + "tags": ["Resources"], + "summary": "Get resources", + "description": "Get resources", + "x-ms-visibility": "internal", + "operationId": "GetResources", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Resource" + } + } + }, + "403": { + "description": "Unauthorized" + }, + "429": { + "description": "Throttled" + }, + "500": { + "description": "Server Error" + } + } + } + }, + "/resources/forms": { + "get": { + "operationId": "GetForms", + "tags": ["Forms"], + "summary": "Get forms", + "description": "Get a list of WPForms", + "x-ms-visibility": "internal", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "Form ID" + }, + "title": { + "type": "string", + "description": "Form name" + } + } + } + } + } + } + } + }, + "/resources/forms/{id}": { + "get": { + "operationId": "GetForm", + "tags": ["Forms"], + "summary": "Get form", + "description": "Get a WPForm (Work in Progress)", + "x-ms-visibility": "internal", + "parameters": [ + { + "name": "id", + "in": "path", + "x-ms-summary": "Form ID", + "description": "The ID of the form to get", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Form ID" + }, + "title": { + "type": "string", + "description": "Form name" + }, + "post_content": { + "type": "object" + } + } + } + } + } + } + }, + "/resources/flows": { + "x-ms-notification-content": { + "schema": { + "x-ms-dynamic-properties": { + "operationId": "GetEntrySchema", + "itemValuePath": "schema", + "parameters": { + "form_id": { + "parameterReference": "body/form_id" + } + } + } + } + }, + "post": { + "operationId": "CreateFlow", + "summary": "When a new WPForms entry is submitted", + "description": "Trigger a flow when a new WPForms entry is submitted", + "x-ms-visibility": "important", + "x-ms-trigger": "single", + "x-ms-trigger-hint": "To see it work, submit a new entry to the selected form", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "Request body", + "required": true, + "schema": { + "type": "object", + "required": [ + "form_id", + "meta" + ], + "properties": { + "form_id": { + "type": "string", + "x-ms-summary": "Form ID", + "description": "Select the form that will trigger the flow when submitted", + "x-ms-dynamic-values": { + "operationId": "GetForms", + "value-title": "title", + "value-path": "id" + } + }, + "meta": { + "type": "object", + "description": "Meta data", + "required": [ "powerAutomateUrl" ], + "properties": { + "powerAutomateUrl": { + "type":"string", + "x-ms-notification-url": true, + "x-ms-visibility": "internal" + } + } + } + } + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/resources/flows/{id}": { + "delete": { + "operationId": "DeleteFlow", + "summary": "Delete a flow -- Internal usage", + "x-ms-visibility": "internal", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Flow ID", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/resources/entries/query": { + "post": { + "operationId": "GetEntries", + "summary": "Get WPForms entries", + "description": "Get a list of WPForms entries", + "x-ms-visibility": "important", + "parameters": [ + { + "in": "query", + "name": "form_id", + "description": "Select the form that you want to get entries from", + "x-ms-summary": "Form to get entries from", + "type": "string", + "required": true, + "x-ms-dynamic-values": { + "operationId": "GetForms", + "value-title": "title", + "value-path": "id" + } + }, + { + "name": "body", + "in": "body", + "schema": { + "x-ms-dynamic-properties": { + "operationId": "GetEntrySchema", + "itemValuePath": "get", + "parameters": { + "form_id": { + "parameterReference": "form_id" + } + } + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "fields": { + "x-ms-dynamic-properties": { + "operationId": "GetEntrySchema", + "itemValuePath": "schema", + "parameters": { + "form_id": { + "parameterReference": "form_id" + } + } + } + } + } + } + } + } + } + + } + }, + "/resources/entries": { + "options": { + "operationId": "GetEntrySchema", + "summary": "Get the schema for an entry. Internal use only", + "description": "Get the schema for an entry. Internal use only", + "x-ms-visibility": "internal", + "parameters": [ + { + "in": "query", + "name": "form_id", + "x-ms-summary": "Form", + "description": "Form ID", + "required": true, + "type": "string", + "x-ms-url-encoding": "single", + "x-ms-dynamic-values": { + "operationId": "GetForms", + "value-title": "title", + "value-path": "id" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "get": { + "type": "object" + }, + "post": { + "type": "object" + }, + "schema": { + "type": "object" + }, + "patch": { + "type": "object" + }, + "delete": { + "type": "object" + } + } + } + } + } + } + }, + "/resources/entries/{id}": { + "get": { + "operationId": "GetEntry", + "summary": "Get a WPForms entry", + "description": "Get a single WPForms entry containing all the fields", + "x-ms-visibility": "important", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "The ID of the entry/form submission to get", + "x-ms-summary": "Entry ID", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "form_id", + "description": "Select the form that you want to get entries from", + "x-ms-summary": "Form", + "type": "string", + "required": true, + "x-ms-dynamic-values": { + "operationId": "GetForms", + "value-title": "title", + "value-path": "id" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "x-ms-dynamic-properties": { + "operationId": "GetEntrySchema", + "itemValuePath": "schema", + "parameters": { + "form_id": { + "parameterReference": "form_id" + } + } + } + } + } + } + } + } + }, + "definitions": { + "Resource": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Resource name" + }, + "key": { + "type": "string", + "description": "Resource key" + }, + "schema_path": { + "type": "string", + "description": "Resource schema path" + } + } + } + }, + "parameters": {}, + "responses": { + "403": { + "schema": {}, + "description": "Unauthorized" + }, + "429": { + "schema": {}, + "description": "Throttled" + }, + "500": { + "schema": {}, + "description": "Server Error" + } + }, + "security": [ + ], + "securityDefinitions": { + "secretKey": { + "type": "apiKey", + "in": "header", + "name": "X-Secret-Key" + } + }, + "tags": [], + "x-ms-connector-metadata": [ + { + "propertyName": "Website", + "propertyValue": "https://www.reenhanced.com/" + }, + { + "propertyName": "Privacy policy", + "propertyValue": "https://www.reehanced.com/privacy/" + }, + { + "propertyName": "Categories", + "propertyValue": "Marketing" + } + ] +} diff --git a/certified-connectors/WPForms by reenhanced/apiProperties.json b/certified-connectors/WPForms by reenhanced/apiProperties.json new file mode 100644 index 0000000000..fc740042cd --- /dev/null +++ b/certified-connectors/WPForms by reenhanced/apiProperties.json @@ -0,0 +1,83 @@ +{ + "properties": { + "connectionParameters": { + "licenseKey": { + "type": "string", + "uiDefinition": { + "constraints": { + "required": "true" + }, + "description": "Specify the license key for the Power Automate for WPForms plugin. (Find in WPForms > Settings > Integrations)", + "displayName": "License Key", + "tooltip": "Copy this from the WPForms > Settings > Integrations page." + } + }, + "secretKey": { + "type": "string", + "uiDefinition": { + "constraints": { + "required": "true", + "clearText": false + }, + "description": "Specify the secret key for the Power Automate for WPForms plugin. (Find in WPForms > Settings > Integrations)", + "displayName": "Secret Key", + "tooltip": "Copy this from the WPForms > Settings > Integrations page." + } + }, + "wpSiteUrl": { + "type": "string", + "uiDefinition": { + "constraints": { + "required": "true" + }, + "description": "Specify the website URL for Power Automate connection. (Find in WPForms > Settings > Integrations)", + "displayName": "URL For Power Automate Connection", + "tooltip": "Copy this from the WPForms > Settings > Integrations page." + } + } + }, + "policyTemplateInstances": [ + { + "templateId": "dynamichosturl", + "title": "WordPress Site URL (include https://)", + "parameters": { + "x-ms-apimTemplateParameter.urlTemplate": "@connectionParameters('wpSiteUrl')/wp-json/wpforms-powerautomate/v1" + } + }, + { + "templateId": "setheader", + "title": "Set Product Identifier", + "parameters": { + "x-ms-apimTemplateParameter.name": "X-Reenhanced-Product", + "x-ms-apimTemplateParameter.value": "power-automate-for-wpforms", + "x-ms-apimTemplateParameter.existsAction": "override", + "x-ms-apimTemplate-policySection": "Request" + } + }, + { + "templateId": "setheader", + "title": "Set Secret Key", + "parameters": { + "x-ms-apimTemplateParameter.name": "X-Secret-Key", + "x-ms-apimTemplateParameter.value": "@connectionParameters('secretKey', '')", + "x-ms-apimTemplateParameter.existsAction": "override", + "x-ms-apimTemplate-policySection": "Request" + } + }, + { + "templateId": "setheader", + "title": "Set License Key", + "parameters": { + "x-ms-apimTemplateParameter.name": "X-License-Authorization", + "x-ms-apimTemplateParameter.value": "@connectionParameters('licenseKey', '')", + "x-ms-apimTemplateParameter.existsAction": "override", + "x-ms-apimTemplate-policySection": "Request" + } + } + ], + "iconBrandColor": "#d3e8ee", + "capabilities": [], + "publisher": "Reenhanced, LLC", + "stackOwner": "WPForms, LLC" + } +} diff --git a/certified-connectors/WPForms by reenhanced/readme.md b/certified-connectors/WPForms by reenhanced/readme.md new file mode 100644 index 0000000000..6b420fe1b8 --- /dev/null +++ b/certified-connectors/WPForms by reenhanced/readme.md @@ -0,0 +1,33 @@ +# WPForms by Reenhanced LLC +Use WPForms form submissions to trigger a flow or access any previous entry from within a flow. This connector brings WPForms to the Power Platform. + +## Publisher: Reenhanced LLC +Reenhanced has built an API on top of WPForms designed to connect WPForms to the Power Platform. + +## Prerequisites +WPForms pro is not required, but is highly recommended. The Power Automate for WPForms plugin requires a valid license for use. Purchase your license at reenhanced.com. + +## Supported Operations + +### Trigger: When a new WPForms entry is submitted +Send the complete entry to Power Automate. Your form fields are available as dynamic content for use in any additional action. + +### Action: Get WPForms Entries +Get a list of entries from any WPForms form and use them in your flow. Each form field is available as a dynamic content item. + +## Obtaining Credentials +To use this connector you need to install the Power Automate for WPForms plugin, available for purchase at reenhanced.com. When you install and activate the plugin, if you reload the Integration settings page you will see the three items required to connect your site to Power Automate: + +1. *License Key:* This is your license key for the plugin +2. *Secret Key:* A randomly generated secret known only to your WordPress site and Power Automate +3. *Site URL:* This is the full url to access your WordPress site and is needed so Power Automate knows how to connect to your WordPress installation. + +## Getting Started +Once you have installed the plugin and created a connection you can start an automated flow that is triggered by submission of a WPForms form. + +## Known Issues and Limitations +At this time there is no way to modify entries within WPForms, but we are planning to build this. + +## Deployment Instructions +This is a certified connector and can be used immediately, but you will need to install the WordPress plugin on any site that you wish to connect to Power Automate. + From bea3a1b2bc80e3a08be9adced9403191e73200e4 Mon Sep 17 00:00:00 2001 From: Kevin Comba <57180726+kelcho-spense@users.noreply.github.com> Date: Mon, 25 Sep 2023 11:49:30 +0300 Subject: [PATCH 06/17] World Academia (#2965) * world academia first commit * removed the default responses * updated stackOwner defination * Merge branch 'dev' of https://github.com/kelcho-spense/PowerPlatformConnectors into dev --------- Co-authored-by: kelcho spense --- .../World Academia/apiDefinition.swagger.json | 450 ++++++++++++++++++ .../World Academia/apiProperties.json | 11 + certified-connectors/World Academia/readme.md | 57 +++ 3 files changed, 518 insertions(+) create mode 100644 certified-connectors/World Academia/apiDefinition.swagger.json create mode 100644 certified-connectors/World Academia/apiProperties.json create mode 100644 certified-connectors/World Academia/readme.md diff --git a/certified-connectors/World Academia/apiDefinition.swagger.json b/certified-connectors/World Academia/apiDefinition.swagger.json new file mode 100644 index 0000000000..7b621215eb --- /dev/null +++ b/certified-connectors/World Academia/apiDefinition.swagger.json @@ -0,0 +1,450 @@ +{ + "swagger": "2.0", + "info": { + "title": "World Academia", + "description": "The primary purpose of this connector is to provide easy and efficient access to university-related data for educational institutions, researchers, students, and anyone interested in information about universities worldwide. The connector will enable users to retrieve data such as lists of universities, university details, continents, countries, and more", + "contact": { + "name": "Kelcho Tech", + "url": "https://www.kelchotech.systems/", + "email": "hello@kelchotech.systems" + }, + "version": "1.0.1" + }, + "host": "worldacademia.rocks", + "basePath": "/", + "schemes": [ + "https" + ], + "consumes": [], + "produces": [], + "paths": { + "/api/v1/continentsdata": { + "get": { + "summary": "Get all continents and their metadata", + "responses": { + "200": { + "description": "The list of continents and metadata", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "countries": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + }, + "404": { + "description": "Universities not found" + }, + "504": { + "description": "An error occurred" + } + }, + "description": "The list of continents and metadata", + "operationId": "Get_all_continents_and_their_metadata" + } + }, + "/api/v1/continents": { + "get": { + "summary": "Get a list continents", + "responses": { + "200": { + "description": "The list of all continents", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "operationId": "Get_a_list_continents", + "description": "The list of all continents" + } + }, + "/api/v1/continent/{continentName}": { + "get": { + "summary": "Get a list countries in a continent", + "parameters": [ + { + "in": "path", + "name": "continentName", + "type": "string", + "required": true, + "description": "continent name", + "x-ms-summary": "continent name", + "x-ms-dynamic-values": { + "operationId": "Get_a_list_continents", + "value-path": "key-item-output", + "value-title": "key-item-output" + }, + "default": "Africa" + } + ], + "responses": { + "200": { + "description": "The list of all countries in a continent", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "404": { + "description": "Continent not found" + } + }, + "description": "The list of all countries in a continent", + "operationId": "Get_a_list_countries_in_a_continent" + } + }, + "/api/v1/sch/count": { + "get": { + "summary": "Get the number of universities available", + "responses": { + "200": { + "description": "Get the number of universities available", + "schema": { + "type": "integer" + } + }, + "404": { + "description": "No Results" + }, + "504": { + "description": "An error occurred" + } + }, + "description": "Get the number of universities available.", + "operationId": "Get_the_number_of_universities_available", + "x-ms-visibility": "important" + } + }, + "/api/v1/sch/countries": { + "get": { + "summary": "Get a list of countries with universities", + "responses": { + "200": { + "description": "The list of all countries with universities", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "description": "The list of all countries with universities", + "operationId": "Get_a_list_of_countries_with_universities" + } + }, + "/api/v1/sch/countriescodes": { + "get": { + "summary": "Get a list of countriesCodes with universities", + "responses": { + "200": { + "description": "The list of all countriesCodes with universities", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "operationId": "Get_a_list_of_countriesCodes_with_universities", + "description": "The_list_of_all_countriesCodes_with_universities" + } + }, + "/api/v1/sch/country/{countryName}": { + "get": { + "summary": "Get all universities in a country via country name", + "parameters": [ + { + "in": "path", + "name": "countryName", + "type": "string", + "required": true, + "default": "Kenya", + "description": "country name", + "x-ms-summary": "country name", + "x-ms-dynamic-values": { + "operationId": "Get_a_list_of_countries_with_universities", + "value-path": "key-item-output", + "value-title": "key-item-output" + } + } + ], + "responses": { + "200": { + "description": "Get all universities in a country", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "country": { + "type": "string" + }, + "alpha_two_code": { + "type": "string" + }, + "state_province": { + "type": "string" + }, + "web_pages": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + }, + "404": { + "description": "No Results" + }, + "504": { + "description": "An error occurred" + } + }, + "operationId": "Get_all_universities_in_a_country_via_country_name", + "description": "Get all universities in a country Media type" + } + }, + "/api/v1/sch/countrycode/{countryCode}": { + "get": { + "summary": "Get all universities in a country via country code", + "parameters": [ + { + "in": "path", + "name": "countryCode", + "type": "string", + "required": true, + "default": "KE", + "description": "country code", + "x-ms-summary": "country code", + "x-ms-dynamic-values": { + "operationId": "Get_a_list_of_countriesCodes_with_universities", + "value-path": "key-item-output", + "value-title": "key-item-output" + } + } + ], + "responses": { + "200": { + "description": "Get all universities in a country", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "country": { + "type": "string" + }, + "alpha_two_code": { + "type": "string" + }, + "state_province": { + "type": "string" + }, + "web_pages": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + }, + "404": { + "description": "No Results" + }, + "504": { + "description": "An error occurred" + } + }, + "operationId": "Get_all_universities_in_a_country_via_country_code", + "description": "Get a list of universities in a country via country code" + } + }, + "/api/v1/sch/university/{universityName}": { + "get": { + "summary": "Get all university details via university name", + "parameters": [ + { + "in": "path", + "name": "universityName", + "type": "string", + "required": true, + "default": "Troy University", + "description": "university name", + "x-ms-summary": "university name", + "x-ms-dynamic-values": { + "operationId": "Get_a_list_of_all_universities", + "value-path": "key-item-output", + "value-title": "key-item-output" + } + } + ], + "responses": { + "200": { + "description": "Get all university details", + "schema": { + "type": "object", + "properties": { + "_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "country": { + "type": "string" + }, + "alpha_two_code": { + "type": "string" + }, + "state_province": { + "type": "string" + }, + "web_pages": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "404": { + "description": "No Results" + }, + "504": { + "description": "An error occurred" + } + }, + "description": "Get all university details (metadata)", + "operationId": "Get_all_university_details" + } + }, + "/api/v1/sch": { + "get": { + "summary": "Get all universities and their metadata", + "responses": { + "200": { + "description": "Get all universities and their metadata", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "country": { + "type": "string" + }, + "alpha_two_code": { + "type": "string" + }, + "state_province": { + "type": "string" + }, + "web_pages": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + }, + "404": { + "description": "Universities not found" + }, + "504": { + "description": "An error occurred" + } + }, + "description": "The list of continents and metadata", + "operationId": "Get_all_universities_and_their_metadata" + } + }, + "/api/v1/schlist": { + "get": { + "summary": "Get a list of all universities", + "responses": { + "200": { + "description": "The list of all universities", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "404": { + "description": "Universities not found" + }, + "504": { + "description": "An error occurred" + } + }, + "description": "The list of all universities", + "operationId": "Get_a_list_of_all_universities" + } + } + }, + "x-ms-connector-metadata": [ + { + "propertyName": "Website", + "propertyValue": "https://www.kelchotech.systems" + }, + { + "propertyName": "Privacy policy", + "propertyValue": "https://www.kelchotech.systems/privacy-policy" + }, + { + "propertyName": "Categories", + "propertyValue": "Data;Website" + } + ], + "definitions": {}, + "parameters": {}, + "responses": {}, + "securityDefinitions": {}, + "security": [], + "tags": [] +} \ No newline at end of file diff --git a/certified-connectors/World Academia/apiProperties.json b/certified-connectors/World Academia/apiProperties.json new file mode 100644 index 0000000000..a1ea10dc3e --- /dev/null +++ b/certified-connectors/World Academia/apiProperties.json @@ -0,0 +1,11 @@ +{ + "properties": { + "connectionParameters": {}, + "iconBrandColor": "#C1FF72", + "capabilities": [ + "actions" + ], + "publisher": "Kelcho Tech", + "stackOwner": "World Academia" + } +} \ No newline at end of file diff --git a/certified-connectors/World Academia/readme.md b/certified-connectors/World Academia/readme.md new file mode 100644 index 0000000000..571cd11ee7 --- /dev/null +++ b/certified-connectors/World Academia/readme.md @@ -0,0 +1,57 @@ +# Title : World Academia +The primary purpose of this connector is to provide easy and efficient access to university-related data for educational institutions, researchers, students, and anyone interested in information about universities worldwide. + +## Publisher: Kelcho Tech​ + +## Prerequisites +You will need the following to use the World Academia connector: +* A Microsoft Power Apps or Power Automate plan with custom connector feature +* The tool is free to use no authentication or licenses is required.​ + +## Supported Operations +The connector will enable users to retrieve data such as lists of universities, university details, continents, countries, and more +### /api/v1/continentsdata +Get all continents and their metadata + +### /api/v1/continents +Get a list continents + +## /api/v1/continent/{continentName} +Get a list countries in a continent.​ + +## /api/v1/sch +Get all universities and their metadata + +## /api/v1/sch/count +Get the number of universities available + +## /api/v1/sch/countries +Get all universities and their metadata + +## /api/v1/sch/countriescodes +Get a list of countriesCodes with universities + +## /api/v1/sch/country/{countryName} +Get all universities in a country via country name + +## /api/v1/sch/countrycode/{countryCode} +Get all universities in a country via country code + +## /api/v1/schlist +Get a list of all universities + +## /api/v1/sch/university/{universityName} +Get all university details via university name + +## Obtaining Credentials +The is no authentication needed to access this connector​ + +## Getting Started +Optional. How to get started with your connector. + +## Known Issues and Limitations +The connector may not cover all universities in the world yet but we are working day and night to achieve this goal.​ + +## Deployment Instructions +Please use [these instructions](https://docs.microsoft.com/en-us/connectors/custom-connectors/paconn-cli) to deploy this connector as custom connector in Microsoft Flow and PowerApps + From ebdacf467765455050ced2a49a6b2462a3d5e61c Mon Sep 17 00:00:00 2001 From: Encodian <45834050+Encodian@users.noreply.github.com> Date: Mon, 25 Sep 2023 13:48:32 +0100 Subject: [PATCH 07/17] Encodian - Sept 23 Release (Region Connection Update) (#2966) --- .../Encodian/apiProperties.json | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/certified-connectors/Encodian/apiProperties.json b/certified-connectors/Encodian/apiProperties.json index fab7da0d60..8b3b38d13b 100644 --- a/certified-connectors/Encodian/apiProperties.json +++ b/certified-connectors/Encodian/apiProperties.json @@ -11,13 +11,13 @@ "type": "securestring", "uiDefinition": { "constraints": { - "clearText": true, + "clearText": false, "required": "true", - "tabIndex": 0 + "tabIndex": 2 }, "description": "Get an API Key - https://www.encodian.com/apikey/", "displayName": "API Key", - "tooltip": "Provide your Encodian Flowr API Key" + "tooltip": "Provide your API Key" } }, "region": { @@ -26,36 +26,35 @@ "displayName": "Region", "tooltip": "Select a data processing region", "constraints": { - "required": "true", - "tabIndex": 1, + "tabIndex": 3, "allowedValues": [ { "text": "Nearest (Fastest)", - "value": "api" + "value": "https://api.apps-encodian.com" }, { "text": "Australia", - "value": "aus-api" + "value": "https://aus-api.apps-encodian.com" }, { "text": "Canada", - "value": "can-api" + "value": "https://can-api.apps-encodian.com" }, { "text": "Europe - Germany", - "value": "ger-api" + "value": "https://ger-api.apps-encodian.com" }, { "text": "Europe - Switzerland", - "value": "swz-api" + "value": "https://swz-api.apps-encodian.com" }, { "text": "United Kingdom", - "value": "uk-api" + "value": "https://uk-api.apps-encodian.com" }, { "text": "United States", - "value": "us-api" + "value": "https://us-api.apps-encodian.com" } ] } @@ -68,7 +67,7 @@ "templateId": "dynamichosturl", "title": "Set region from connection parameter", "parameters": { - "x-ms-apimTemplateParameter.urlTemplate": "https://@connectionParameters('region').apps-encodian.com" + "x-ms-apimTemplateParameter.urlTemplate": "@connectionParameters('region','https://api.apps-encodian.com')" } } ] From 5aa338f2a740e979cb94cfb6a484f0dfcad414ac Mon Sep 17 00:00:00 2001 From: TuckermanRav Date: Mon, 25 Sep 2023 09:59:42 -0400 Subject: [PATCH 08/17] UiPath Automation Cloud [v2 features] (#2943) * UiPath v2 features & switch to global app auth model. * minor updates to readme. * updates to Readme based on PR feedback. * Additional readme updates requested. --- .../UiPath Automation Cloud/ReadMe.md | 51 + .../apiDefinition.swagger.json | 2714 +++++++++++++++++ .../apiProperties.json | 105 + 3 files changed, 2870 insertions(+) create mode 100644 certified-connectors/UiPath Automation Cloud/ReadMe.md create mode 100644 certified-connectors/UiPath Automation Cloud/apiDefinition.swagger.json create mode 100644 certified-connectors/UiPath Automation Cloud/apiProperties.json diff --git a/certified-connectors/UiPath Automation Cloud/ReadMe.md b/certified-connectors/UiPath Automation Cloud/ReadMe.md new file mode 100644 index 0000000000..26f235fa06 --- /dev/null +++ b/certified-connectors/UiPath Automation Cloud/ReadMe.md @@ -0,0 +1,51 @@ +# UiPath Automation Cloud +This connector allows you to connect and run automated workflows in UiPath Automation Cloud. UiPath is a leading provider of Robotic Process Automation technology. Its Orchestrator service provides a web-based platform for managing, deploying, scheduling, monitoring, and automating processes. It is designed to run business processes on multiple robots in a consistent and efficient manner, making it easier to scale automation projects of any size. + +## Publisher: UiPath Inc. +[UiPath Website](https://uipath.com) + +## Prerequisites +- If you do not already have a UiPath Automation Cloud account, you will need to register for one. [Sign up](https://www.uipath.com/developers/studio-download) for a trial. Once registered, an UiPath administrator can then invite you to their Automation Cloud project. +- Before connecting with Automation Cloud, your admin must register Power Automate integration in the *UiPath -> External applications -> App registrations* section. + +## Supported Operations +The UiPath Orchestrator Connector supports operations that allow users to run jobs, get job statuses, add queue items to specific queues, and get queue item information. The connector enables the user to monitor the status of each of these operations using UiPath Orchestrator features, such as the "Do Until" and "Initialize and Set Variable" functions. + +### Run Job +[Run Jobs](https://docs.uipath.com/orchestrator/docs/about-jobs) in UiPath Orchestrator. + +### Get Job +Utilize the [Get Job](https://docs.uipath.com/orchestrator/automation-cloud/latest/user-guide/job-states) function to acquire specifics related to a task initiated through the "Run Job" feature. You may assess for statuses such as "Successful, Running or Faulted". In workflows, you may pair the "Do Until" and "Initialize and Set Variable" features with the "Get Job" function to monitor the "State" property of the preceding "Run Job" phase. + +### Add Queue Items +[Add a Queue Item](https://docs.uipath.com/orchestrator/docs/about-queues-and-transactions) to a specific queue. + +### Get Queue Item +Obtain information about a [Queue Item](https://docs.uipath.com/orchestrator/automation-cloud/latest/user-guide/queue-item-statuses) created during a prior step. For instance, you can verify its status, such as "Successful" or "Failed". In your workflow, you can employ the "Get Queue Item" functionality, coupled with "Do Until" and "Initialize and Set Variable", to inspect the "Status" attribute of the preceding "Add Queue Items" phase. + +## Obtaining Credentials +To get credentials for Automation Cloud, you need to register for an account on the [Automation Cloud website](https://www.uipath.com/developers/studio-download), or you can reach out to your UiPath Automation Cloud administrator. After registering, you will be provided with a username and password that will enable you to log in and view the services available to you. + +## Getting Started +1. Add the UiPath Automation Cloud Connector as a step in your Power Automate Flow. +2. Enter your Organization ID and Tenant ID in the provided text fields (Ask your admin if you are not sure where to get this from or check FAQ below). +3. Log in using your credentials (Ensure that the Power Automate Connector has been registered by an admin in advance). +4. After successful authentication, you can choose folders, processes, and queues from the form. +5. You can now start using the Connector in your environment to create apps and flows! + +## Known Issues and Limitations +This connector does not work with OnPremsies deplyoments. +For security reasons you need to reauthenticate your connections after 90 days. + +## Frequently Asked Questions +### Why is the UiPath Automation Cloud sign in process not working +If you have working credetials, please make sure the Power Automate Connector has been registered for your UiPath Automation Cloud organization before you connect. Contact your admin for further help. +### Does this connector work for OnPremise deployments +No, this connector works only with UiPath Automation Cloud. +### Why is process breaking after 90 days +You will have to reauthenticate after 90 days for security reasons. +### Where do I get Organization ID and Tenant ID from +If you browse to your Orchestrator instance, you can check the URL https://cloud.uipath.com/{Organization ID}/{Tenant ID}. + +## Deployment Instructions +There is no manual deployment process required as both the PowerAutomate and UiPath platforms handle all aspects of deployment, app registration and privilege management. \ No newline at end of file diff --git a/certified-connectors/UiPath Automation Cloud/apiDefinition.swagger.json b/certified-connectors/UiPath Automation Cloud/apiDefinition.swagger.json new file mode 100644 index 0000000000..a8a553d929 --- /dev/null +++ b/certified-connectors/UiPath Automation Cloud/apiDefinition.swagger.json @@ -0,0 +1,2714 @@ +{ + "swagger": "2.0", + "info": + { + "title": "UiPath Automation Cloud", + "description": "Run automations in UiPath Cloud Orchestrator.", + "version": "1.0.0", + "contact": + { + "name": "Integrations Team", + "email": "integrations-apps@uipath.com", + "url": "https://www.uipath.com/support" + } + }, + "host": "cloud.uipath.com", + "basePath": "/orchestrator_/", + "schemes": + [ + "https" + ], + "x-ms-connector-metadata": + [ + { + "propertyName": "Website", + "propertyValue": "https://www.uipath.com" + }, + { + "propertyName": "Privacy policy", + "propertyValue": "https://www.uipath.com/legal/privacy-policy" + }, + { + "propertyName": "Categories", + "propertyValue": "AI;Business Intelligence" + } + ], + "securityDefinitions": + { + "oauth2_auth": + { + "type": "oauth2", + "flow": "accessCode", + "authorizationUrl": "https://cloud.uipath.com/identity_/connect/authorize", + "tokenUrl": "https://cloud.uipath.com/identity_/connect/token", + "scopes": + { + "OR.Execution.Read OR.Folders.Read OR.Jobs OR.Queues OR.Machines.Read offline_access": "OR.Execution.Read OR.Folders.Read OR.Jobs OR.Queues OR.Machines.Read offline_access" + } + } + }, + "security": + [ + { + "oauth2_auth": + [ + "OR.Execution.Read OR.Folders.Read OR.Jobs OR.Queues OR.Machines.Read offline_access" + ] + } + ], + "parameters": + { + "filter": + { + "in": "query", + "name": "$filter", + "description": "Restricts the set of items returned. The maximum number of expressions is 100.", + "type": "string", + "x-ms-summary": "Filter", + "x-ms-visibility": "advanced" + }, + "orderBy": + { + "in": "query", + "name": "$orderby", + "description": "Specifies the order in which items are returned. The maximum number of expressions is 5.", + "type": "string", + "x-ms-summary": "Order By", + "x-ms-visibility": "advanced" + }, + "top": + { + "in": "query", + "name": "$top", + "description": "Limits the number of items returned from a collection. The maximum value is 1000.", + "type": "integer", + "format": "int32", + "x-ms-summary": "Top", + "x-ms-visibility": "advanced" + }, + "skip": + { + "in": "query", + "name": "$skip", + "description": "Excludes the specified number of items of the queried collection from the result.", + "type": "integer", + "format": "int32", + "x-ms-summary": "Skip", + "x-ms-visibility": "advanced" + } + }, + "paths": + { + "/odata/Folders": + { + "get": + { + "description": "Gets a list of folders.", + "operationId": "GetFolders", + "parameters": + [ + { + "$ref": "#/parameters/filter" + }, + { + "$ref": "#/parameters/orderBy" + }, + { + "$ref": "#/parameters/top" + }, + { + "$ref": "#/parameters/skip" + } + ], + "produces": + [ + "application/json" + ], + "responses": + { + "200": + { + "description": "Success", + "schema": + { + "$ref": "#/definitions/ODataValueOfIEnumerableOfFolderDto" + } + } + }, + "summary": "Get Folders", + "x-ms-visibility": "internal" + } + }, + "/odata/Jobs/UiPath.Server.Configuration.OData.StartJobs": + { + "post": + { + "consumes": + [ + "application/json;odata.metadata=minimal;odata.streaming=true", + "application/json;odata.metadata=minimal;odata.streaming=false", + "application/json;odata.metadata=minimal", + "application/json;odata.metadata=full;odata.streaming=true", + "application/json;odata.metadata=full;odata.streaming=false", + "application/json;odata.metadata=full", + "application/json;odata.metadata=none;odata.streaming=true", + "application/json;odata.metadata=none;odata.streaming=false", + "application/json;odata.metadata=none", + "application/json;odata.streaming=true", + "application/json;odata.streaming=false", + "application/json" + ], + "description": "Creates a new job and sets it in Pending state for each robot based on the input parameters and notifies the respective robots about the pending job.", + "operationId": "StartJobs", + "summary": "Start Job", + "parameters": + [ + { + "in": "body", + "name": "body", + "description": "StartInfo - The information required to register the new jobs.", + "schema": + { + "$ref": "#/definitions/StartJobDto" + } + }, + { + "in": "header", + "name": "X-UIPATH-OrganizationUnitId", + "description": "Folder/OrganizationUnit Id", + "type": "integer", + "format": "int64", + "required": true, + "x-ms-summary": "Folder", + "x-ms-dynamic-values": + { + "operationId": "GetFolders", + "value-path": "Id", + "value-collection": "value", + "value-title": "FullyQualifiedName" + } + } + ], + "produces": + [ + "application/json" + ], + "responses": + { + "201": + { + "description": "Success", + "schema": + { + "$ref": "#/definitions/ODataValueOfIEnumerableOfJobDto" + } + } + }, + + "tags": + [ + "Jobs" + ] + } + }, + "/odata/Jobs({key})": + { + "get": + { + "summary": "Get Job", + "description": "Gets a single job by id", + "operationId": "GetJob", + "produces": + [ + "application/json" + ], + "parameters": + [ + { + "in": "path", + "name": "key", + "description": "Specifies the unique job id", + "required": true, + "type": "integer", + "format": "int64", + "x-ms-summary": "Job Id", + "x-ms-url-encoding": "single" + } + ], + "responses": + { + "200": + { + "description": "Success", + "schema": + { + "$ref": "#/definitions/JobDto" + } + } + } + } + }, + "/odata/Processes": + { + "get": + { + "tags": + [ + "Processes" + ], + "summary": "Get Processes", + "description": "Gets a list of processes.", + "operationId": "GetProcesses", + "x-ms-visibility": "internal", + "produces": + [ + "application/json" + ], + "parameters": + [ + { + "in": "query", + "name": "searchTerm", + "description": "Used to narrow result items to those matching the requested search term.", + "type": "string", + "default": "", + "x-ms-summary": "Search Term", + "x-ms-visibility": "advanced" + }, + { + "in": "query", + "name": "feedId", + "description": "Indicates the feed id.", + "type": "string", + "format": "uuid", + "x-ms-summary": "Search Term", + "x-ms-visibility": "advanced" + }, + { + "$ref": "#/parameters/filter" + }, + { + "$ref": "#/parameters/orderBy" + }, + { + "$ref": "#/parameters/top" + }, + { + "$ref": "#/parameters/skip" + } + ], + "responses": + { + "200": + { + "description": "Success", + "schema": + { + "$ref": "#/definitions/ODataValueOfIEnumerableOfProcessDto" + } + } + } + } + }, + "/odata/QueueDefinitions": + { + "get": + { + "tags": + [ + "QueueDefinitions" + ], + "summary": "Gets Queues", + "description": "Gets a list of queues.", + "operationId": "GetQueueDefinitions", + "x-ms-visibility": "internal", + "produces": + [ + "application/json" + ], + "parameters": + [ + { + "in": "query", + "name": "mandatoryPermissions", + "description": "All permissions in this set must be met", + "type": "array", + "x-ms-summary": "Mandatory Permissions", + "x-ms-visibility": "advanced", + "items": + { + "type": "string" + } + }, + { + "in": "query", + "name": "atLeastOnePermissions", + "description": "At least one permission in this set must be met", + "type": "array", + "x-ms-summary": "At Least One Permission", + "x-ms-visibility": "advanced", + "items": + { + "type": "string" + } + }, + { + "$ref": "#/parameters/filter" + }, + { + "$ref": "#/parameters/orderBy" + }, + { + "$ref": "#/parameters/top" + }, + { + "$ref": "#/parameters/skip" + }, + { + "in": "header", + "name": "X-UIPATH-OrganizationUnitId", + "description": "Folder/OrganizationUnit Id", + "type": "integer", + "format": "int64", + "required": true, + "x-ms-summary": "Folder", + "x-ms-dynamic-values": + { + "operationId": "GetFolders", + "value-path": "Id", + "value-collection": "value", + "value-title": "FullyQualifiedName" + } + } + ], + "responses": + { + "200": + { + "description": "Success", + "schema": + { + "$ref": "#/definitions/ODataValueOfIEnumerableOfQueueDefinitionDto" + } + } + } + } + }, + "/odata/Queues/UiPathODataSvc.AddQueueItem": + { + "post": + { + "tags": + [ + "Queues" + ], + "summary": "Add Queue Item", + "description": "Add a new queue item for processing.", + "operationId": "AddQueueItem", + "consumes": + [ + "application/json;odata.metadata=minimal;odata.streaming=true", + "application/json;odata.metadata=minimal;odata.streaming=false", + "application/json;odata.metadata=minimal", + "application/json;odata.metadata=full;odata.streaming=true", + "application/json;odata.metadata=full;odata.streaming=false", + "application/json;odata.metadata=full", + "application/json;odata.metadata=none;odata.streaming=true", + "application/json;odata.metadata=none;odata.streaming=false", + "application/json;odata.metadata=none", + "application/json;odata.streaming=true", + "application/json;odata.streaming=false", + "application/json" + ], + "produces": + [ + "application/json" + ], + "parameters": + [ + { + "in": "body", + "name": "body", + "description": "Defines the queue item content.", + "schema": + { + "type": "object", + "properties": + { + "itemData": + { + "description": "Defines the work item content.", + "type": "object", + "properties": + { + "Name": + { + "description": "Required. The name of the queue into which the item will be added.", + "type": "string", + "x-ms-dynamic-values": + { + "operationId": "GetQueueDefinitions", + "value-path": "Name", + "value-collection": "value", + "value-title": "Name", + "parameters": + { + "X-UIPATH-OrganizationUnitId": + { + "parameter": "X-UIPATH-OrganizationUnitId" + } + } + } + }, + "Priority": + { + "description": "Sets the processing importance for a given item.", + "default": "Normal", + "enum": + [ + "High", + "Normal", + "Low" + ], + "type": "string", + "x-ms-enum": + { + "name": "QueueItemDataDtoPriority", + "modelAsString": false + } + }, + "SpecificContent": + { + "description": "A collection of key value pairs. Example: \"Name\":\"John\", \"Status\": true", + "type": "object", + "x-ms-summary": "Specific Content", + "additionalProperties": + { + } + }, + "DeferDate": + { + "format": "date-time", + "x-ms-summary": "Defer Date", + "description": "The earliest date and time at which the item is available for processing. If empty the item can be processed as soon as possible.", + "type": "string" + }, + "DueDate": + { + "format": "date-time", + "x-ms-summary": "Due Date", + "description": "The latest date and time at which the item should be processed. If empty the item can be processed at any given time.", + "type": "string" + }, + "RiskSlaDate": + { + "format": "date-time", + "x-ms-summary": "Risk SLA Date", + "description": "The RiskSla date at time which is considered as risk zone for the item to be processed.", + "type": "string" + }, + "Reference": + { + "description": "An optional, user-specified value for queue item identification.", + "maxLength": 128, + "minLength": 0, + "type": "string" + }, + "Progress": + { + "description": "String field which is used to keep track of the business flow progress.", + "type": "string" + } + } + } + } + } + }, + { + "in": "header", + "name": "X-UIPATH-OrganizationUnitId", + "description": "Folder/OrganizationUnit Id", + "type": "integer", + "format": "int64", + "required": true, + "x-ms-summary": "Folder", + "x-ms-dynamic-values": + { + "operationId": "GetFolders", + "value-path": "Id", + "value-collection": "value", + "value-title": "FullyQualifiedName" + } + } + ], + "responses": + { + "201": + { + "description": "Success", + "schema": + { + "$ref": "#/definitions/QueueItemDto" + } + } + } + } + }, + "/odata/QueueItems({key})": + { + "get": + { + "summary": "Get Queue Item", + "description": "Gets a single queue item by id.", + "operationId": "GetQueueItem", + "produces": + [ + "application/json" + ], + "parameters": + [ + { + "in": "path", + "name": "key", + "description": "Specifies the unique identifier for a queue item", + "required": true, + "type": "integer", + "format": "int64", + "x-ms-summary": "Queue Item Id", + "x-ms-url-encoding": "single" + }, + { + "in": "header", + "name": "X-UIPATH-OrganizationUnitId", + "description": "Folder/OrganizationUnit Id", + "type": "integer", + "format": "int64", + "required": true, + "x-ms-summary": "Folder", + "x-ms-dynamic-values": + { + "operationId": "GetFolders", + "value-path": "Id", + "value-collection": "value", + "value-title": "FullyQualifiedName" + } + } + ], + "responses": + { + "200": + { + "description": "Success", + "schema": + { + "$ref": "#/definitions/QueueItemDto" + } + } + }, + "security": + [ + { + "OAuth2": + [ + ] + } + ] + } + }, + "/odata/Releases": + { + "get": + { + "tags": + [ + "Releases" + ], + "summary": "Get Releases", + "description": "Gets a list of releases.", + "operationId": "GetReleases", + "x-ms-visibility": "internal", + "produces": + [ + "application/json" + ], + "parameters": + [ + { + "in": "header", + "name": "X-UIPATH-OrganizationUnitId", + "description": "Folder/OrganizationUnit Id", + "type": "integer", + "format": "int64", + "x-ms-summary": "Folder Id" + }, + { + "$ref": "#/parameters/filter" + }, + { + "$ref": "#/parameters/orderBy" + }, + { + "$ref": "#/parameters/top" + }, + { + "$ref": "#/parameters/skip" + } + ], + "responses": + { + "200": + { + "description": "Success", + "schema": + { + "$ref": "#/definitions/ODataValueOfIEnumerableOfReleaseDto" + } + } + } + } + }, + "/odata/Machines/UiPath.Server.Configuration.OData.GetRuntimesForFolder(folderId={folderId})": + { + "get": + { + "tags": + [ + "Machines" + ], + "summary": "Gets available runtimes", + "description": "Gets a list of available runtimes for the specified folder", + "operationId": "GetMachinesByFolderId", + "x-ms-visibility": "internal", + "produces": + [ + "application/json" + ], + "parameters": + [ + { + "in": "path", + "name": "folderId", + "description": "", + "required": true, + "type": "integer", + "format": "int64", + "x-ms-url-encoding": "single" + }, + { + "$ref": "#/parameters/filter" + }, + { + "$ref": "#/parameters/orderBy" + } + ], + "responses": + { + "200": + { + "description": "Success", + "schema": + { + "$ref": "#/definitions/ODataValueOfIEnumerableOfMachineRuntimeDto" + } + } + }, + "security": + [ + { + "OAuth2": + [ + ] + } + ] + } + } + }, + "definitions": + { + "ArgumentMetadata": + { + "type": "object", + "properties": + { + "Input": + { + "type": "string" + }, + "Output": + { + "type": "string" + } + } + }, + "CustomKeyValuePair": + { + "description": "Stores a custom pair of key and value for assets with type KeyValueList.", + "type": "object", + "properties": + { + "Key": + { + "description": "A piece of text representing the key.", + "type": "string" + }, + "Value": + { + "description": "A piece of text representing the value.", + "type": "string" + } + } + }, + "EntryPointDataVariationDto": + { + "type": "object", + "properties": + { + "Content": + { + "type": "string" + }, + "ContentType": + { + "enum": + [ + "Json" + ], + "type": "string", + "x-ms-enum": + { + "name": "EntryPointDataVariationDtoContentType", + "modelAsString": false + } + }, + "Id": + { + "format": "int64", + "type": "integer" + } + } + }, + "EntryPointDto": + { + "type": "object", + "properties": + { + "UniqueId": + { + "format": "uuid", + "type": "string" + }, + "Path": + { + "type": "string" + }, + "InputArguments": + { + "type": "string" + }, + "OutputArguments": + { + "type": "string" + }, + "DataVariation": + { + "$ref": "#/definitions/EntryPointDataVariationDto" + }, + "Id": + { + "format": "int64", + "type": "integer" + } + } + }, + "FolderDto": + { + "required": + [ + "DisplayName" + ], + "type": "object", + "properties": + { + "Key": + { + "format": "uuid", + "description": "Unique key for the folder.", + "type": "string" + }, + "DisplayName": + { + "description": "Display name for the folder.", + "maxLength": 115, + "type": "string" + }, + "FullyQualifiedName": + { + "description": "Name of folder prepended by the names of its ancestors.", + "type": "string" + }, + "Description": + { + "description": "Description of folder", + "maxLength": 500, + "type": "string" + }, + "IsPersonal": + { + "description": "True if Personal", + "type": "boolean", + "readOnly": true + }, + "ProvisionType": + { + "description": "Robot provisioning type", + "enum": + [ + "Manual", + "Automatic" + ], + "type": "string", + "x-ms-enum": + { + "name": "FolderDtoProvisionType", + "modelAsString": false + } + }, + "PermissionModel": + { + "description": "Folder permissions model", + "enum": + [ + "InheritFromTenant", + "FineGrained" + ], + "type": "string", + "x-ms-enum": + { + "name": "FolderDtoPermissionModel", + "modelAsString": false + } + }, + "ParentId": + { + "format": "int64", + "description": "Id of parent folder in the folders hierarchy", + "type": "integer" + }, + "ParentKey": + { + "format": "uuid", + "description": "Unique key for the parent folder", + "type": "string" + }, + "FeedType": + { + "description": "Folder feed type", + "enum": + [ + "Undefined", + "Processes", + "Libraries", + "PersonalWorkspace", + "FolderHierarchy" + ], + "type": "string", + "x-ms-enum": + { + "name": "FolderDtoFeedType", + "modelAsString": false + } + }, + "Id": + { + "description": "Unique identifier of the folder.", + "format": "int64", + "type": "integer" + } + } + }, + "JobDto": + { + "description": "Represents a scheduled or manual execution of a process on a robot.", + "type": "object", + "properties": + { + "Key": + { + "format": "uuid", + "description": "The unique job identifier.", + "type": "string" + }, + "StartTime": + { + "format": "date-time", + "description": "The date and time when the job execution started or null if the job hasn't started yet.", + "type": "string" + }, + "EndTime": + { + "format": "date-time", + "description": "The date and time when the job execution ended or null if the job hasn't ended yet.", + "type": "string" + }, + "State": + { + "description": "Represents the current state of the job.", + "enum": + [ + "Pending", + "Running", + "Stopping", + "Terminating", + "Faulted", + "Successful", + "Stopped", + "Suspended", + "Resumed" + ], + "type": "string", + "x-ms-enum": + { + "name": "JobDtoState", + "modelAsString": false + } + }, + "JobPriority": + { + "description": "Execution priority.", + "x-ms-summary": "Job Priority", + "enum": + [ + "Low", + "Normal", + "High" + ], + "type": "string", + "x-ms-enum": + { + "name": "JobDtoJobPriority", + "modelAsString": false + } + }, + "Source": + { + "description": "The Source name of the job.", + "type": "string" + }, + "SourceType": + { + "description": "The Source type of the job.", + "enum": + [ + "Manual", + "Schedule", + "Agent", + "Queue", + "StudioWeb" + ], + "type": "string", + "x-ms-enum": + { + "name": "JobDtoSourceType", + "modelAsString": false + } + }, + "Info": + { + "description": "Additional information about the current job.", + "type": "string" + }, + "CreationTime": + { + "format": "date-time", + "description": "The date and time when the job was created.", + "type": "string" + }, + "ReleaseName": + { + "description": "The name of the release associated with the current name.", + "type": "string" + }, + "Type": + { + "description": "The type of the job, Attended if started via the robot, Unattended otherwise", + "enum": + [ + "Unattended", + "Attended" + ], + "type": "string", + "x-ms-enum": + { + "name": "JobDtoType", + "modelAsString": false + } + }, + "InputArguments": + { + "description": "Input parameters in JSON format to be passed to job execution", + "type": "string" + }, + "OutputArguments": + { + "description": "Output parameters in JSON format resulted from job execution", + "type": "string" + }, + "HostMachineName": + { + "description": "The name of the machine where the Robot run the job.", + "type": "string" + }, + "HasMediaRecorded": + { + "description": "True if any execution media has been recorded for this job, false otherwise.", + "type": "boolean" + }, + "PersistenceId": + { + "format": "uuid", + "description": "The persistence instance id for a suspended job", + "type": "string" + }, + "ResumeVersion": + { + "format": "int32", + "description": "Distinguishes between multiple job suspend/resume cycles", + "type": "integer" + }, + "StopStrategy": + { + "enum": + [ + "SoftStop", + "Kill" + ], + "type": "string", + "x-ms-enum": + { + "name": "JobDtoStopStrategy", + "modelAsString": false + } + }, + "RuntimeType": + { + "description": "The runtime type of the robot which can pick up the job", + "enum": + [ + "NonProduction", + "Attended", + "Unattended", + "Studio", + "RpaDeveloper", + "Development", + "StudioX", + "CitizenDeveloper", + "Headless", + "RpaDeveloperPro", + "StudioPro", + "TestAutomation" + ], + "type": "string", + "x-ms-enum": + { + "name": "JobDtoRuntimeType", + "modelAsString": false + } + }, + "RequiresUserInteraction": + { + "type": "boolean" + }, + "ReleaseVersionId": + { + "format": "int64", + "type": "integer" + }, + "EntryPointPath": + { + "description": "Path to the entry point workflow (XAML) that will be executed by the robot", + "maxLength": 512, + "type": "string" + }, + "OrganizationUnitId": + { + "format": "int64", + "description": "Id of the folder this job is part of.", + "type": "integer" + }, + "OrganizationUnitFullyQualifiedName": + { + "description": "Fully qualified name of the folder this job is part of.", + "type": "string" + }, + "Reference": + { + "description": "Reference identifier for the job", + "type": "string" + }, + "ProcessType": + { + "enum": + [ + "Undefined", + "Process", + "TestAutomationProcess" + ], + "type": "string", + "x-ms-enum": + { + "name": "JobDtoProcessType", + "modelAsString": false + } + }, + "ProfilingOptions": + { + "description": "Options to instruct the robot what profiling info to collect (code coverage, CPU / memory utilization, etc)", + "type": "string" + }, + "Id": + { + "description": "The unique identifier for the job.", + "format": "int64", + "type": "integer" + } + } + }, + "JobsStartJobsParameters": + { + "type": "object", + "properties": + { + "startInfo": + { + "$ref": "#/definitions/StartProcessDto" + } + } + }, + "MachineDto": + { + "description": "The Machine that hosts the Robot", + "required": + [ + "Name" + ], + "type": "object", + "properties": + { + "LicenseKey": + { + "description": "The key is automatically generated from the server for the Robot machine. For the robot to work, the same key must exist on both the robot and Orchestrator.", + "maxLength": 255, + "minLength": 0, + "type": "string" + }, + "Name": + { + "description": "The name of the Machine a Robot is hosted on.", + "maxLength": 450, + "minLength": 0, + "type": "string" + }, + "Description": + { + "maxLength": 500, + "minLength": 0, + "type": "string" + }, + "Type": + { + "description": "The type of the Machine (Standard / Template).", + "enum": + [ + "Standard", + "Template" + ], + "type": "string", + "x-ms-enum": + { + "name": "MachineDtoType", + "modelAsString": false + } + }, + "Scope": + { + "description": "The scope of the Machine (Default / Shared / PW / Cloud).", + "enum": + [ + "Default", + "Shared", + "PersonalWorkspace", + "Cloud" + ], + "type": "string", + "x-ms-enum": + { + "name": "MachineDtoScope", + "modelAsString": false + } + }, + "NonProductionSlots": + { + "format": "int32", + "description": "Number of NonProduction slots to be reserved at runtime", + "type": "integer" + }, + "UnattendedSlots": + { + "format": "int32", + "description": "Number of Unattended slots to be reserved at runtime", + "type": "integer" + }, + "HeadlessSlots": + { + "format": "int32", + "description": "Number of Headless slots to be reserved at runtime", + "type": "integer" + }, + "TestAutomationSlots": + { + "format": "int32", + "description": "Number of TestAutomation slots to be reserved at runtime", + "type": "integer" + }, + "Key": + { + "format": "uuid", + "description": "An immutable unique identifier that is preserved during tenant migration", + "type": "string" + }, + "RobotVersions": + { + "description": "The versions of the Robots hosted on the Machine.", + "type": "array", + "items": + { + "$ref": "#/definitions/MachinesRobotVersionDto" + } + }, + "RobotUsers": + { + "description": "Robots assigned to template machine.", + "type": "array", + "items": + { + "$ref": "#/definitions/RobotUserDto" + } + }, + "AutoScalingProfile": + { + "description": "The profile that drives auto scaling.", + "enum": + [ + "CostEfficient", + "Balanced", + "Fast", + "Custom" + ], + "type": "string", + "x-ms-enum": + { + "name": "MachineDtoAutoScalingProfile", + "modelAsString": false + } + }, + "Id": + { + "format": "int64", + "type": "integer" + } + } + }, + "MachineRobotDto": + { + "type": "object", + "properties": + { + "MachineId": + { + "format": "int64", + "description": "The Id of the Machine.", + "type": "integer" + }, + "MachineName": + { + "description": "The name of the Machine.", + "type": "string" + }, + "RobotId": + { + "format": "int64", + "description": "The Id of the Robot.", + "type": "integer" + }, + "RobotUserName": + { + "description": "The robot user name.", + "type": "string" + } + } + }, + "MachinesRobotVersionDto": + { + "type": "object", + "properties": + { + "Count": + { + "format": "int64", + "description": "The number of Robots on the Machine with the specified version.", + "type": "integer" + }, + "Version": + { + "description": "The Version of the Robot hosted on the Machine.", + "type": "string" + }, + "MachineId": + { + "format": "int64", + "description": "The Id of the Machine.", + "type": "integer" + } + } + }, + "MachineRuntimeDto": + { + "type": "object", + "properties": + { + "Type": + { + "enum": + [ + "NonProduction", + "Attended", + "Unattended", + "Development", + "Studio", + "RpaDeveloper", + "StudioX", + "CitizenDeveloper", + "Headless", + "RpaDeveloperPro", + "StudioPro", + "TestAutomation", + "AutomationCloud", + "Serverless", + "AutomationKit", + "ServerlessTestAutomation", + "AutomationCloudTestAutomation", + "AttendedStudioWeb" + ], + "type": "string", + "x-ms-enum": + { + "name": "MachineRuntimeDtoType", + "modelAsString": false + } + }, + "Total": + { + "format": "int64", + "type": "integer" + }, + "Connected": + { + "format": "int64", + "type": "integer" + }, + "Available": + { + "format": "int64", + "type": "integer" + } + } + }, + "ODataValueOfIEnumerableOfFolderDto": + { + "type": "object", + "properties": + { + "value": + { + "type": "array", + "items": + { + "$ref": "#/definitions/FolderDto" + } + } + } + }, + "ODataValueOfIEnumerableOfJobDto": + { + "type": "object", + "properties": + { + "value": + { + "type": "array", + "items": + { + "$ref": "#/definitions/JobDto" + } + } + } + }, + "ODataValueOfIEnumerableOfProcessDto": + { + "type": "object", + "properties": + { + "value": + { + "type": "array", + "items": + { + "$ref": "#/definitions/ProcessDto" + } + } + } + }, + "ODataValueOfIEnumerableOfQueueDefinitionDto": + { + "type": "object", + "properties": + { + "value": + { + "type": "array", + "items": + { + "$ref": "#/definitions/QueueDefinitionDto" + } + } + } + }, + "ODataValueOfIEnumerableOfReleaseDto": + { + "type": "object", + "properties": + { + "value": + { + "type": "array", + "items": + { + "$ref": "#/definitions/ReleaseDto" + } + } + } + }, + "OrganizationUnitDto": + { + "description": "Stores information about an organization unit in Orchestrator. An orchestrator unit can be understood as a company department and it is used to group different entities.", + "required": + [ + "DisplayName" + ], + "type": "object", + "properties": + { + "DisplayName": + { + "description": "The name of the organization unit.", + "maxLength": 128, + "type": "string" + }, + "Id": + { + "format": "int64", + "type": "integer" + } + } + }, + "ProcessDto": + { + "description": "A process is a project defined in UiPath Studio and published in Orchestrator from UiPath Studio or manually.", + "type": "object", + "properties": + { + "IsActive": + { + "description": "Specifies if the process is still active.", + "type": "boolean" + }, + "Arguments": + { + "$ref": "#/definitions/ArgumentMetadata" + }, + "SupportsMultipleEntryPoints": + { + "description": "Specifies if the process has multiple entry points.", + "type": "boolean" + }, + "MainEntryPointPath": + { + "description": "The main entry point path.", + "type": "string" + }, + "RequiresUserInteraction": + { + "description": "Specifies if the process can run in headless mode.", + "type": "boolean" + }, + "TargetFramework": + { + "enum": + [ + "Legacy", + "Windows", + "Portable" + ], + "type": "string", + "x-ms-enum": + { + "name": "ProcessDtoTargetFramework", + "modelAsString": false + } + }, + "EntryPoints": + { + "description": "Entry points.", + "type": "array", + "items": + { + "$ref": "#/definitions/EntryPointDto" + } + }, + "Title": + { + "description": "The custom name of the package.", + "type": "string" + }, + "Version": + { + "description": "The current version of the given package.", + "type": "string" + }, + "Key": + { + "description": "The unique identifier for the package.", + "type": "string" + }, + "Description": + { + "description": "Used to add additional information about a package in order to better identify it.", + "type": "string" + }, + "Published": + { + "format": "date-time", + "description": "The date and time when the package was published or uploaded.", + "type": "string" + }, + "IsLatestVersion": + { + "description": "Specifies whether the current version is the latest of the given package.", + "type": "boolean" + }, + "OldVersion": + { + "description": "Specifies the last version before the current one.", + "type": "string" + }, + "ReleaseNotes": + { + "description": "Package release notes.", + "type": "string" + }, + "Authors": + { + "description": "Package authors.", + "type": "string" + }, + "ProjectType": + { + "description": "Package project type.", + "enum": + [ + "Undefined", + "Process", + "ProcessLibrary", + "BusinessProcess", + "BusinessProcessLibrary", + "TestAutomationProcess" + ], + "type": "string", + "x-ms-enum": + { + "name": "PackageDtoProjectType", + "modelAsString": false + } + }, + "Id": + { + "type": "string" + } + } + }, + "ProcessingExceptionDto": + { + "description": "Stores information about exceptions thrown while processing failed queue items.", + "type": "object", + "properties": + { + "Reason": + { + "description": "The reason the processing failed.", + "type": "string" + }, + "Details": + { + "description": "Stores additional details about the exception.", + "type": "string" + }, + "Type": + { + "description": "The processing exception type, if any.", + "enum": + [ + "ApplicationException", + "BusinessException" + ], + "type": "string", + "x-ms-enum": + { + "name": "ProcessingExceptionDtoType", + "modelAsString": false + } + }, + "AssociatedImageFilePath": + { + "description": "A path on the robot running computer to an image file that stores relevant information about the exception - e.g. a system print screen.", + "type": "string" + }, + "CreationTime": + { + "format": "date-time", + "description": "Time when the exception occurred", + "type": "string" + } + } + }, + "ProcessSettingsDto": + { + "type": "object", + "properties": + { + "ErrorRecordingEnabled": + { + "type": "boolean" + }, + "Duration": + { + "format": "int32", + "type": "integer" + }, + "Frequency": + { + "format": "int32", + "type": "integer" + }, + "Quality": + { + "format": "int32", + "type": "integer" + }, + "AutoStartProcess": + { + "type": "boolean" + }, + "AlwaysRunning": + { + "type": "boolean" + } + } + }, + "QueueDefinitionDto": + { + "description": "The definition of a work queue. A work queue contains work items that are processed by robots.", + "required": + [ + "Name" + ], + "type": "object", + "properties": + { + "Name": + { + "description": "A custom name for the queue.", + "type": "string" + }, + "Description": + { + "description": "Used to add additional information about a queue in order to better identify it.", + "type": "string" + }, + "MaxNumberOfRetries": + { + "format": "int32", + "description": "An integer value representing the number of times an item of this queue can be retried if its processing fails with application exception and auto retry is on.", + "type": "integer" + }, + "AcceptAutomaticallyRetry": + { + "description": "States whether a robot should retry to process an item if, after processing, it failed with application exception.", + "type": "boolean" + }, + "EnforceUniqueReference": + { + "description": "States whether Item Reference field should be unique per Queue. Deleted and retried items are not checked against this rule.", + "type": "boolean" + }, + "SpecificDataJsonSchema": + { + "description": "JSON schema enforced onto the specific data field.", + "type": "string" + }, + "OutputDataJsonSchema": + { + "description": "JSON schema enforced onto the output data field.", + "type": "string" + }, + "AnalyticsDataJsonSchema": + { + "description": "JSON schema enforced onto the analytics data field.", + "type": "string" + }, + "CreationTime": + { + "format": "date-time", + "description": "The date and time when the queue was created.", + "type": "string" + }, + "ProcessScheduleId": + { + "format": "int64", + "description": "The Id of the process schedule associated with the queue.", + "type": "integer" + }, + "SlaInMinutes": + { + "format": "int32", + "description": "Queue item processing SLA on the QueueDefinition level.", + "maximum": 2147483647, + "minimum": 0, + "type": "integer" + }, + "RiskSlaInMinutes": + { + "format": "int32", + "description": "Queue Item processing Risk SLA on the QueueDefinition level.", + "maximum": 2147483647, + "minimum": 0, + "type": "integer" + }, + "ReleaseId": + { + "format": "int64", + "description": "The ProcessId Queue is associated with.", + "type": "integer" + }, + "IsProcessInCurrentFolder": + { + "description": "Flag to determine if the release is in the current folder", + "type": "boolean" + }, + "FoldersCount": + { + "format": "int32", + "description": "Number of folders where the queue is shared.", + "type": "integer" + }, + "OrganizationUnitId": + { + "format": "int64", + "description": "DEPRECATED. ", + "type": "integer", + "x-deprecated": true + }, + "OrganizationUnitFullyQualifiedName": + { + "description": "DEPRECATED. ", + "type": "string", + "x-deprecated": true + }, + "Id": + { + "description": "The unique identifier for the queue definition.", + "format": "int64", + "type": "integer" + } + } + }, + "QueueItemDataDto": + { + "description": "Defines the work item content.", + "type": "object", + "properties": + { + "Name": + { + "description": "The name of the queue into which the item will be added.", + "type": "string" + }, + "Priority": + { + "description": "Sets the processing importance for a given item.", + "enum": + [ + "High", + "Normal", + "Low" + ], + "type": "string", + "x-ms-enum": + { + "name": "QueueItemDataDtoPriority", + "modelAsString": false + } + }, + "SpecificContent": + { + "description": "A collection of key value pairs containing custom data configured in the Add Queue Item activity, in UiPath Studio.", + "type": "object", + "additionalProperties": + { + } + }, + "DeferDate": + { + "format": "date-time", + "description": "The earliest date and time at which the item is available for processing. If empty the item can be processed as soon as possible.", + "type": "string" + }, + "DueDate": + { + "format": "date-time", + "description": "The latest date and time at which the item should be processed. If empty the item can be processed at any given time.", + "type": "string" + }, + "RiskSlaDate": + { + "format": "date-time", + "description": "The RiskSla date at time which is considered as risk zone for the item to be processed.", + "type": "string" + }, + "Reference": + { + "description": "An optional, user-specified value for queue item identification.", + "maxLength": 128, + "minLength": 0, + "type": "string" + }, + "Progress": + { + "description": "String field which is used to keep track of the business flow progress.", + "type": "string" + } + } + }, + "QueueItemDto": + { + "description": "Defines a piece of data that can be processed by a robot and the information associated with its processing status. Queue items are grouped in queues.", + "type": "object", + "properties": + { + "QueueDefinitionId": + { + "format": "int64", + "description": "The Id of the parent queue.", + "type": "integer" + }, + "ProcessingException": + { + "$ref": "#/definitions/ProcessingExceptionDto" + }, + "SpecificContent": + { + "description": "A collection of key value pairs containing custom data configured in the Add Queue Item activity, in UiPath Studio.", + "type": "object", + "additionalProperties": + { + } + }, + "Output": + { + "description": "A collection of key value pairs containing custom data resulted after successful processing.", + "type": "object", + "additionalProperties": + { + } + }, + "OutputData": + { + "description": "A JSON representation of the output data generated by the item's processing.", + "type": "string" + }, + "Analytics": + { + "description": "A collection of key value pairs containing custom data for further analytics processing.", + "type": "object", + "additionalProperties": + { + } + }, + "AnalyticsData": + { + "description": "A JSON representation of the analytics data generated by the item's processing.", + "type": "string" + }, + "Status": + { + "description": "The processing state of the item.", + "enum": + [ + "New", + "InProgress", + "Failed", + "Successful", + "Abandoned", + "Retried", + "Deleted" + ], + "type": "string", + "x-ms-enum": + { + "name": "QueueItemDtoStatus", + "modelAsString": false + } + }, + "ReviewStatus": + { + "description": "The review state of the item - applicable only for failed items.", + "enum": + [ + "None", + "InReview", + "Verified", + "Retried" + ], + "type": "string", + "x-ms-enum": + { + "name": "QueueItemDtoReviewStatus", + "modelAsString": false + } + }, + "ReviewerUserId": + { + "format": "int64", + "description": "The UserId of the Reviewer, if any.", + "type": "integer" + }, + "Key": + { + "format": "uuid", + "description": "The unique identifier of a queue item.", + "type": "string" + }, + "Reference": + { + "description": "An optional, user-specified value for queue item identification.", + "maxLength": 128, + "minLength": 0, + "type": "string" + }, + "ProcessingExceptionType": + { + "description": "The processing exception. If the item has not been processed or has been processed successfully it will be null.", + "enum": + [ + "ApplicationException", + "BusinessException" + ], + "type": "string", + "x-ms-enum": + { + "name": "QueueItemDtoProcessingExceptionType", + "modelAsString": false + } + }, + "DueDate": + { + "format": "date-time", + "description": "The latest date and time at which the item should be processed. If empty the item can be processed at any given time.", + "type": "string" + }, + "RiskSlaDate": + { + "format": "date-time", + "description": "The RiskSla date at time which is considered as risk zone for the item to be processed.", + "type": "string" + }, + "Priority": + { + "description": "Sets the processing importance for a given item.", + "enum": + [ + "High", + "Normal", + "Low" + ], + "type": "string", + "x-ms-enum": + { + "name": "QueueItemDtoPriority", + "modelAsString": false + } + }, + "DeferDate": + { + "format": "date-time", + "description": "The earliest date and time at which the item is available for processing. If empty the item can be processed as soon as possible.", + "type": "string" + }, + "StartProcessing": + { + "format": "date-time", + "description": "The date and time at which the item processing started. This is null if the item was not processed.", + "type": "string" + }, + "EndProcessing": + { + "format": "date-time", + "description": "The date and time at which the item processing ended. This is null if the item was not processed.", + "type": "string" + }, + "SecondsInPreviousAttempts": + { + "format": "int32", + "description": "The number of seconds that the last failed processing lasted.", + "type": "integer" + }, + "AncestorId": + { + "format": "int64", + "description": "The Id of an ancestor item connected to the current item.", + "type": "integer" + }, + "RetryNumber": + { + "format": "int32", + "description": "The number of times this work item has been processed. This can be higher than 0 only if MaxRetried number is set and the item processing failed at least once with ApplicationException.", + "type": "integer" + }, + "SpecificData": + { + "description": "A JSON representation of the specific content.", + "type": "string" + }, + "CreationTime": + { + "format": "date-time", + "description": "The date and time when the item was created.", + "type": "string" + }, + "Progress": + { + "description": "String field which is used to keep track of the business flow progress.", + "type": "string" + }, + "RowVersion": + { + "format": "byte", + "description": "Identifier used for optimistic concurrency, so Orchestrator can figure whether data is out of date or not.", + "type": "string" + }, + "OrganizationUnitId": + { + "format": "int64", + "description": "DEPRECATED. ", + "type": "integer", + "x-deprecated": true + }, + "OrganizationUnitFullyQualifiedName": + { + "description": "DEPRECATED. ", + "type": "string", + "x-deprecated": true + }, + "Id": + { + "format": "int64", + "type": "integer" + } + } + }, + "QueuesAddQueueItemParameters": + { + "type": "object", + "properties": + { + "itemData": + { + "$ref": "#/definitions/QueueItemDataDto" + } + } + }, + "ReleaseDto": + { + "required": + [ + "Name", + "ProcessKey", + "ProcessVersion" + ], + "type": "object", + "properties": + { + "Key": + { + "description": "A unique identifier associated to each release.", + "type": "string" + }, + "ProcessKey": + { + "description": "The unique identifier of the process associated with the release.", + "type": "string" + }, + "ProcessVersion": + { + "description": "The version of the process associated with the release.", + "type": "string" + }, + "IsLatestVersion": + { + "description": "States whether the version of process associated with the release is latest or not.", + "type": "boolean" + }, + "IsProcessDeleted": + { + "description": "States whether the process associated with the release is deleted or not.", + "type": "boolean" + }, + "Description": + { + "description": "Used to add additional information about a release in order to better identify it.", + "type": "string" + }, + "Name": + { + "description": "A custom name of the release. The default name format is ProcessName_EnvironmentName.", + "type": "string" + }, + "EnvironmentId": + { + "format": "int64", + "description": "The Id of the environment associated with the release.", + "type": "integer" + }, + "EnvironmentName": + { + "description": "The name of the environment associated with the release.", + "type": "string" + }, + "EntryPointId": + { + "format": "int64", + "type": "integer" + }, + "EntryPoint": + { + "$ref": "#/definitions/EntryPointDto" + }, + "InputArguments": + { + "description": "Input parameters in JSON format to be passed as default values to job execution.", + "maxLength": 10000, + "type": "string" + }, + "ProcessType": + { + "enum": + [ + "Undefined", + "Process", + "TestAutomationProcess" + ], + "type": "string", + "x-ms-enum": + { + "name": "ReleaseDtoProcessType", + "modelAsString": false + } + }, + "SupportsMultipleEntryPoints": + { + "type": "boolean" + }, + "RequiresUserInteraction": + { + "type": "boolean" + }, + "CurrentVersion": + { + "$ref": "#/definitions/ReleaseVersionDto" + }, + "ReleaseVersions": + { + "description": "The collection of release versions that current release had over time.", + "type": "array", + "items": + { + "$ref": "#/definitions/ReleaseVersionDto" + } + }, + "Arguments": + { + "$ref": "#/definitions/ArgumentMetadata" + }, + "ProcessSettings": + { + "$ref": "#/definitions/ProcessSettingsDto" + }, + "AutoUpdate": + { + "type": "boolean" + }, + "FeedId": + { + "format": "uuid", + "type": "string" + }, + "JobPriority": + { + "description": "The execution priority. If null, it defaults to Normal.", + "enum": + [ + "Low", + "Normal", + "High" + ], + "type": "string", + "x-ms-enum": + { + "name": "ReleaseDtoJobPriority", + "modelAsString": false + } + }, + "CreationTime": + { + "format": "date-time", + "description": "Creation time of this release.", + "type": "string" + }, + "OrganizationUnitId": + { + "format": "int64", + "description": "Id of the folder this release is part of.", + "type": "integer" + }, + "OrganizationUnitFullyQualifiedName": + { + "description": "Fully qualified name of the folder this release is part of.", + "type": "string" + }, + "Id": + { + "format": "int64", + "type": "integer" + } + } + }, + "ReleaseVersionDto": + { + "description": "Stores data about a version of the various versions of the process associated with a certain release. If a certain version is associated on and off with a release a new ReleaseVersion object is created for each association.", + "required": + [ + "ReleaseId", + "VersionNumber" + ], + "type": "object", + "properties": + { + "ReleaseId": + { + "format": "int64", + "description": "The Id of the parent release.", + "type": "integer" + }, + "VersionNumber": + { + "description": "The version of process associated with the release.", + "maxLength": 50, + "type": "string" + }, + "CreationTime": + { + "format": "date-time", + "description": "The date and time when the version was associated with the release.", + "type": "string" + }, + "ReleaseName": + { + "description": "The name of the process associated with the release.", + "type": "string" + }, + "Id": + { + "format": "int64", + "type": "integer" + } + } + }, + "RobotUserDto": + { + "required": + [ + "RobotId" + ], + "type": "object", + "properties": + { + "UserName": + { + "description": "The name of the user.", + "type": "string" + }, + "RobotId": + { + "format": "int64", + "description": "The Id of the Robot.", + "type": "integer" + }, + "HasTriggers": + { + "description": "Whether the machine robot has triggers defined or not.", + "type": "boolean" + } + } + }, + "StartJobDto": + { + "type": "object", + "properties": + { + "startInfo": + { + "description": "The Start Process transfers information from client to the server during JobsController.StartJobs custom action.", + "required": + [ + "ReleaseKey", + "Strategy", + "JobsCount" + ], + "type": "object", + "properties": + { + "ReleaseKey": + { + "description": "Required. Select process you want to run.", + "type": "string", + "x-ms-dynamic-values": + { + "operationId": "GetReleases", + "value-path": "Key", + "value-collection": "value", + "value-title": "Name", + "parameters": + { + "X-UIPATH-OrganizationUnitId": + { + "parameter": "X-UIPATH-OrganizationUnitId" + } + } + }, + "x-ms-summary": "Process Name" + }, + "Strategy": + { + "description": "States which robots from the environment are being run by the process.", + "type": "string", + "default": "ModernJobsCount", + "x-ms-visibility": "internal" + }, + "JobsCount": + { + "format": "int32", + "description": "Required. Number of pending jobs to be created in the environment, for the current process. This number must be greater than 0 only if the start strategy is JobsCount.", + "type": "integer", + "x-ms-summary": "Jobs Count", + "x-ms-visibility": "advanced", + "default": 1 + }, + "Source": + { + "description": "The Source of the job starting the current process.", + "x-ms-visibility": "advanced", + "default": "Manual", + "enum": + [ + "Manual", + "Schedule", + "Queue", + "StudioWeb" + ], + "type": "string", + "x-ms-enum": + { + "name": "StartProcessDtoSource", + "modelAsString": false + } + }, + "JobPriority": + { + "description": "If null, defaults to the job priority of its process.", + "x-ms-summary": "Job Priority", + "enum": + [ + "Low", + "Normal", + "High" + ], + "type": "string", + "x-ms-enum": + { + "name": "StartProcessDtoJobPriority", + "modelAsString": false + } + }, + "RuntimeType": + { + "description": "Required. Select runtime you want to execute on.", + "type": "string", + "x-ms-dynamic-values": + { + "operationId": "GetMachinesByFolderId", + "value-path": "Type", + "value-collection": "value", + "value-title": "Type", + "parameters": + { + "folderId": + { + "parameter": "X-UIPATH-OrganizationUnitId" + } + } + }, + "x-ms-summary": "Runtime Type" + }, + "InputArguments": + { + "description": "Input parameters in JSON format to be passed to job execution.", + "maxLength": 10000, + "type": "string", + "x-ms-summary": "Input Arguments" + }, + "Reference": + { + "description": "Optional user-specified reference for jobs", + "maxLength": 128, + "type": "string", + "x-ms-visibility": "internal" + } + } + } + }, + "required": + [ + "startInfo" + ] + }, + "StartProcessDto": + { + "description": "The Start Process transfers information from client to the server during JobsController.StartJobs custom action.", + "required": + [ + "ReleaseKey" + ], + "type": "object", + "properties": + { + "ReleaseKey": + { + "description": "The unique key of the release associated with the process.", + "type": "string" + }, + "Strategy": + { + "description": "States which robots from the environment are being run by the process.", + "enum": + [ + "All", + "Specific", + "RobotCount", + "JobsCount", + "ModernJobsCount" + ], + "type": "string", + "x-ms-enum": + { + "name": "StartProcessDtoStrategy", + "modelAsString": false + } + }, + "RobotIds": + { + "description": "The collection of ids of specific robots selected to be run by the current process. This collection must be empty only if the start strategy is not Specific.", + "type": "array", + "items": + { + "format": "int64", + "type": "integer" + } + }, + "MachineSessionIds": + { + "description": "The machines used for running the job. If empty, the job will start on the first available machine", + "type": "array", + "items": + { + "format": "int64", + "type": "integer" + } + }, + "NoOfRobots": + { + "format": "int32", + "description": "DEPRECATED. Number of pending jobs to be created in the environment, for the current process. This number must be greater than 0 only if the start strategy is RobotCount.", + "type": "integer", + "x-deprecated": true + }, + "JobsCount": + { + "format": "int32", + "description": "Number of pending jobs to be created in the environment, for the current process. This number must be greater than 0 only if the start strategy is JobsCount.", + "type": "integer" + }, + "Source": + { + "description": "The Source of the job starting the current process.", + "enum": + [ + "Manual", + "Schedule", + "Queue", + "StudioWeb" + ], + "type": "string", + "x-ms-enum": + { + "name": "StartProcessDtoSource", + "modelAsString": false + } + }, + "JobPriority": + { + "description": "Execution priority. If null, defaults to the JobPriority of its release.", + "enum": + [ + "Low", + "Normal", + "High" + ], + "type": "string", + "x-ms-enum": + { + "name": "StartProcessDtoJobPriority", + "modelAsString": false + } + }, + "RuntimeType": + { + "enum": + [ + "NonProduction", + "Attended", + "Unattended", + "Studio", + "RpaDeveloper", + "Development", + "StudioX", + "CitizenDeveloper", + "Headless", + "RpaDeveloperPro", + "StudioPro", + "TestAutomation" + ], + "type": "string", + "x-ms-enum": + { + "name": "StartProcessDtoRuntimeType", + "modelAsString": false + } + }, + "InputArguments": + { + "description": "Input parameters in JSON format to be passed to job execution.", + "maxLength": 10000, + "type": "string" + }, + "Reference": + { + "description": "Optional user-specified reference for jobs", + "maxLength": 128, + "type": "string" + }, + "MachineRobots": + { + "description": "The machine-robot mappings used for running the job.", + "type": "array", + "items": + { + "$ref": "#/definitions/MachineRobotDto" + } + } + } + }, + "UserNotificationSubscription": + { + "type": "object", + "properties": + { + "Queues": + { + "type": "boolean" + }, + "Robots": + { + "type": "boolean" + }, + "Jobs": + { + "type": "boolean" + }, + "Schedules": + { + "type": "boolean" + }, + "Tasks": + { + "type": "boolean" + }, + "QueueItems": + { + "type": "boolean" + }, + "Insights": + { + "type": "boolean" + }, + "CloudRobots": + { + "type": "boolean" + } + } + }, + "ODataValueOfIEnumerableOfMachineRuntimeDto": + { + "type": "object", + "properties": + { + "value": + { + "type": "array", + "items": + { + "$ref": "#/definitions/MachineRuntimeDto" + } + } + } + } + } +} \ No newline at end of file diff --git a/certified-connectors/UiPath Automation Cloud/apiProperties.json b/certified-connectors/UiPath Automation Cloud/apiProperties.json new file mode 100644 index 0000000000..8e259dd250 --- /dev/null +++ b/certified-connectors/UiPath Automation Cloud/apiProperties.json @@ -0,0 +1,105 @@ +{ + "properties": + { + "connectionParameters": + { + "token": + { + "type": "oauthSetting", + "oAuthSettings": + { + "identityProvider": "oauth2generic", + "clientId": "[enter client id]", + "scopes": + [ + "OR.Execution.Read", + "OR.Folders.Read", + "OR.Jobs", + "OR.Queues", + "OR.Machines.Read", + "offline_access" + ], + "redirectMode": "Global", + "redirectUrl": "https://global.consent.azure-apim.net/redirect", + "properties": + { + "IsFirstParty": "False", + "IsOnbehalfofLoginSupported": false + }, + "customParameters": + { + "authorizationUrlTemplate": + { + "value": "https://cloud.uipath.com/identity_/connect/authorize" + }, + "authorizationUrlQueryStringTemplate": + { + "value": "?client_id={ClientId}&response_type=code&redirect_uri={RedirectUrl}&state={state}&acr_values=tenantName:{OrgName}&scope={scopes}" + }, + "tokenUrlTemplate": + { + "value": "https://cloud.uipath.com/identity_/connect/token" + }, + "tokenBodyTemplate": + { + "value": "client_id={ClientId}&code={Code}&scope={scopes}&grant_type=authorization_code&client_secret={ClientSecret}&redirect_uri={RedirectUrl}&acr_values=tenantName:{OrgName}" + }, + "refreshUrlTemplate": + { + "value": "https://cloud.uipath.com/identity_/connect/token" + }, + "refreshBodyTemplate": + { + "value": "client_id={ClientId}&scope={Scopes}&refresh_token={RefreshToken}&redirect_uri={RedirectUrl}&grant_type=refresh_token&client_secret={ClientSecret}&acr_values=tenantName:{OrgName}" + } + } + } + }, + "token:orgName": + { + "type": "string", + "uiDefinition": + { + "constraints": + { + "required": "true" + }, + "description": "Specify your organization name.", + "displayName": "Organization Name", + "tooltip": "Specify your organization name." + } + }, + "tenantName": + { + "type": "string", + "uiDefinition": + { + "constraints": + { + "required": "true" + }, + "description": "Specify your tenant name.", + "displayName": "Tenant Name", + "tooltip": "Specify your tenant name." + } + } + }, + "iconBrandColor": "#FA4616", + "capabilities": + [ + ], + "policyTemplateInstances": + [ + { + "templateId": "dynamichosturl", + "title": "Route to Tenant Address", + "parameters": + { + "x-ms-apimTemplateParameter.urlTemplate": "https://cloud.uipath.com/@connectionParameters('token:orgName')/@connectionParameters('tenantName')" + } + } + ], + "publisher": "UiPath", + "stackOwner": "UiPath" + } +} \ No newline at end of file From b7b8ae0f557f68d4b56733f54d160f7b0324199c Mon Sep 17 00:00:00 2001 From: Lex-Olivier-M <145681729+Lex-Olivier-M@users.noreply.github.com> Date: Tue, 26 Sep 2023 13:53:18 +0200 Subject: [PATCH 09/17] Lex Power Sign connector -initial commit (#2960) * initial commit * Readme.md updated to conform to template * added link tou our documentation in Readme.md --- .../Lex Power Sign/apiDefinition.swagger.json | 3744 +++++++++++++++++ .../Lex Power Sign/apiProperties.json | 25 + certified-connectors/Lex Power Sign/readme.md | 89 + 3 files changed, 3858 insertions(+) create mode 100644 certified-connectors/Lex Power Sign/apiDefinition.swagger.json create mode 100644 certified-connectors/Lex Power Sign/apiProperties.json create mode 100644 certified-connectors/Lex Power Sign/readme.md diff --git a/certified-connectors/Lex Power Sign/apiDefinition.swagger.json b/certified-connectors/Lex Power Sign/apiDefinition.swagger.json new file mode 100644 index 0000000000..db03c83c4c --- /dev/null +++ b/certified-connectors/Lex Power Sign/apiDefinition.swagger.json @@ -0,0 +1,3744 @@ +{ + "swagger": "2.0", + "info": { + "version": "1.0.0", + "title": "Lex Power Sign", + "description": "Lex Persona is a European qualified trust services provider offering a range of electronic signature solutions. With Lex Enterprise, you have access to all the eIDAS signature levels, along with a large number of signer authentication methods. Your signature books are embedded in digital workflows. Automate connections between Lex Enterprise and all your tools to eliminate repetitive tasks, gain efficiency, and accelerate your business.", + "contact": { + "name": "Lex Persona support", + "url": "https://support.lex-persona.com", + "email": "support@lex-persona.com" + } + }, + "host": "sgs-wm-test01.sunnystamp.com", + "basePath": "/", + "schemes": [ + "https" + ], + "x-ms-connector-metadata": [ + { + "propertyName": "Website", + "propertyValue": "https://www.lex-persona.com" + }, + { + "propertyName": "Privacy policy", + "propertyValue": "https://www.lex-persona.com/politique-de-confidentialite/" + }, + { + "propertyName": "Categories", + "propertyValue": "AI;Website" + } + ], + "consumes": [], + "produces": [ + "application/json" + ], + "paths": { + "/api/consentPages/{cpId}": { + "get": { + "summary": "Retrieve consent page", + "tags": [ + "Consent Pages" + ], + "description": "Retrieve consent page information from consent page id", + "operationId": "RetrieveConsentPage", + "parameters": [ + { + "name": "cpId", + "x-ms-summary": "Consent page Id", + "description": "Id of the consent page", + "in": "path", + "type": "string", + "required": true + }, + { + "name": "Content-Type", + "x-ms-summary": "Content type", + "in": "header", + "required": true, + "type": "string", + "default": "application/json", + "description": "Content-Type", + "x-ms-visibility": "advanced" + } + ], + "responses": { + "200": { + "description": "Success", + "schema": { + "$ref": "#/definitions/consentPage" + } + } + } + } + }, + "/api/consentPages": { + "get": { + "summary": "Search consent pages", + "tags": [ + "Consent Pages" + ], + "description": "Search consent pages", + "operationId": "SearchConsentPages", + "parameters": [ + { + "name": "text", + "x-ms-summary": "Search text", + "in": "query", + "type": "string", + "description": "Search text" + }, + { + "name": "items.isDefault", + "x-ms-summary": "Search default", + "in": "query", + "type": "string", + "description": "Search for default consent page" + }, + { + "name": "items.isDisabled", + "x-ms-summary": "Search disabled", + "in": "query", + "type": "string", + "description": "Search for disabled consent pages" + }, + { + "name": "items.name", + "x-ms-summary": "Search name", + "in": "query", + "type": "string", + "description": "Search by consent page name" + }, + { + "name": "items.stepType", + "x-ms-summary": "Search step type", + "in": "query", + "type": "string", + "description": "Search by step type" + }, + { + "name": "items.clientId", + "x-ms-summary": "Search client id", + "in": "query", + "type": "string", + "description": "Search by client Id" + }, + { + "name": "items.created", + "x-ms-summary": "Search creation date", + "in": "query", + "type": "string", + "description": "Search by creation date" + }, + { + "name": "items.updated", + "x-ms-summary": "Search update date", + "in": "query", + "type": "string", + "description": "Search by last update date" + }, + { + "name": "sortBy", + "x-ms-summary": "Sort by", + "in": "query", + "type": "string", + "description": "The field on which to sort the search result" + }, + { + "name": "sortOrder", + "x-ms-summary": "Sort order", + "in": "query", + "type": "string", + "description": "The direction of the sorting" + }, + { + "name": "itemsPerPage", + "x-ms-summary": "Items per page", + "in": "query", + "type": "string", + "description": "Number of items per page in the response" + }, + { + "name": "pageIndex", + "x-ms-summary": "Page index", + "in": "query", + "type": "string", + "description": "Index of the returned page" + } + ], + "responses": { + "200": { + "description": "Success", + "schema": { + "$ref": "#/definitions/consentPages" + }, + "headers": { + "Content-Type": { + "description": "Content-Type", + "type": "string" + } + } + } + } + } + }, + "/api/users/{userId}/contacts": { + "post": { + "summary": "Create contact", + "tags": [ + "Contacts" + ], + "description": "Add a contact to the current user's contacts list", + "operationId": "CreateContact", + "parameters": [ + { + "name": "userId", + "x-ms-summary": "User Id", + "description": "User to whom the contact belongs", + "in": "path", + "type": "string", + "required": true + }, + { + "name": "Content-Type", + "x-ms-summary": "Content type", + "in": "header", + "required": true, + "type": "string", + "default": "application/json", + "description": "Content-Type", + "x-ms-visibility": "advanced" + }, + { + "name": "body", + "in": "body", + "schema": { + "type": "object", + "properties": { + "email": { + "type": "string", + "description": "Contact email", + "x-ms-summary": "Contact email" + }, + "phoneNumber": { + "type": "string", + "description": "phoneNumber", + "x-ms-summary": "Contatct phone Number" + }, + "firstName": { + "type": "string", + "description": "firstName", + "x-ms-summary": "Contact first Name" + }, + "lastName": { + "type": "string", + "description": "lastName", + "x-ms-summary": "Contact last Name" + }, + "country": { + "type": "string", + "description": "country", + "x-ms-summary": "Contact country" + } + }, + "required": [ + "email", + "firstName", + "lastName" + ] + }, + "required": true + } + ], + "responses": { + "200": { + "description": "Success", + "schema": { + "$ref": "#/definitions/contact" + }, + "headers": { + "Content-Type": { + "description": "Content-Type", + "type": "string" + } + } + } + } + } + }, + "/api/contacts/{contactId}": { + "get": { + "summary": "Retrieve contact", + "tags": [ + "Contacts" + ], + "description": "Retrieve contact information from contact id", + "operationId": "RetrieveContact", + "parameters": [ + { + "name": "contactId", + "x-ms-summary": "Contact Id", + "description": "Id of the contact", + "in": "path", + "type": "string", + "required": true + }, + { + "name": "Content-Type", + "x-ms-summary": "Content type", + "in": "header", + "required": true, + "type": "string", + "default": "application/json", + "description": "Content-Type", + "x-ms-visibility": "advanced" + } + ], + "responses": { + "200": { + "description": "Success", + "schema": { + "$ref": "#/definitions/contact" + } + } + } + }, + "delete": { + "summary": "Delete contact", + "tags": [ + "Contacts" + ], + "description": "Remove contact from the current user's contects list", + "operationId": "DeleteContact", + "parameters": [ + { + "name": "contactId", + "x-ms-summary": "Contact Id", + "description": "Id of the contact", + "in": "path", + "type": "string", + "required": true + }, + { + "name": "Content-Type", + "x-ms-summary": "Content type", + "in": "header", + "required": true, + "type": "string", + "default": "application/json", + "description": "Content-Type", + "x-ms-visibility": "advanced" + } + ], + "responses": { + "200": { + "description": "Success", + "schema": { + "$ref": "#/definitions/contact" + }, + "headers": { + "Content-Type": { + "description": "Content-Type", + "type": "string" + } + } + } + } + }, + "patch": { + "summary": "Update contact", + "tags": [ + "Contacts" + ], + "description": "Modify an existing contact information", + "operationId": "UpdateContact", + "parameters": [ + { + "name": "contactId", + "x-ms-summary": "Contact Id", + "description": "Id of the contact", + "in": "path", + "type": "string", + "required": true + }, + { + "name": "Content-Type", + "x-ms-summary": "Content type", + "in": "header", + "required": true, + "type": "string", + "default": "application/json", + "description": "Content-Type", + "x-ms-visibility": "advanced" + }, + { + "name": "body", + "in": "body", + "schema": { + "type": "object", + "properties": { + "email": { + "type": "string", + "description": "Email of the contact", + "x-ms-summary": "Email of the contact" + }, + "phoneNumber": { + "type": "string", + "description": "Phone Number of the contact", + "x-ms-summary": "Phone Number of the contact" + }, + "firstName": { + "type": "string", + "description": "First Name of the contact", + "x-ms-summary": "First Name of the contact" + }, + "lastName": { + "type": "string", + "description": "Last Name of the contact", + "x-ms-summary": "Last Name of the contact" + }, + "country": { + "type": "string", + "description": "Country of the contact", + "x-ms-summary": "Country of the contact" + } + }, + "default": { + "email": "john.doe@my-company.com", + "phoneNumber": "+33612345678", + "firstName": "John", + "lastName": "DOE", + "country": "MR" + } + }, + "required": true + } + ], + "responses": { + "200": { + "description": "Success", + "schema": { + "$ref": "#/definitions/contact" + }, + "headers": { + "Content-Type": { + "description": "Content-Type", + "type": "string" + } + } + } + } + } + }, + "/api/contacts": { + "get": { + "summary": "Search contacts", + "tags": [ + "Contacts" + ], + "description": "Search contacts", + "operationId": "SearchContacts", + "parameters": [ + { + "name": "text", + "x-ms-summary": "Search text", + "description": "Search by text", + "in": "query", + "type": "string" + }, + { + "name": "items.email", + "x-ms-summary": "Search email", + "description": "Search by email", + "in": "query", + "type": "string" + }, + { + "name": "items.phoneNumber", + "x-ms-summary": "Search phone number", + "description": "Search by phone number", + "in": "query", + "type": "string" + }, + { + "name": "items.fisrtName", + "x-ms-summary": "Search first name", + "description": "Search by first name", + "in": "query", + "type": "string" + }, + { + "name": "items.lastName", + "x-ms-summary": "Search last name", + "description": "Search by last name", + "in": "query", + "type": "string" + }, + { + "name": "items.country", + "x-ms-summary": "Search country", + "description": "Search by country", + "in": "query", + "type": "string" + }, + { + "name": "itemsPerPage", + "x-ms-summary": "Items per page", + "description": "Number of items per page in the response", + "in": "query", + "type": "number" + }, + { + "name": "pageIndex", + "x-ms-summary": "Page index", + "description": "Index of the returned page", + "in": "query", + "type": "number" + } + ], + "responses": { + "200": { + "description": "Success", + "schema": { + "$ref": "#/definitions/contacts" + }, + "headers": { + "Content-Type": { + "description": "Content-Type", + "type": "string" + } + } + } + } + } + }, + "/api/tenants/{tenantId}/dataMapping": { + "get": { + "summary": "Retrieve metadata mapping", + "description": "Retrieve the metadata mapping of the specified tenant", + "operationId": "getDataMapping", + "tags": [ + "Metadata" + ], + "parameters": [ + { + "name": "tenantId", + "description": "Id of the tenant", + "x-ms-summary": "Tenant Id", + "in": "path", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "Success", + "schema": { + "$ref": "#/definitions/dataMapping" + }, + "headers": { + "Content-Type": { + "description": "Content-Type", + "type": "string" + } + } + } + } + } + }, + "/api/tenants/{tenantId}/signatureProfiles": { + "post": { + "summary": "Create signature profile", + "tags": [ + "Signature Profiles" + ], + "description": "Create a signature profile", + "operationId": "CreateSignatureProfile", + "parameters": [ + { + "name": "tenantId", + "x-ms-summary": "Tenant Id", + "description": "Id of the tenant", + "in": "path", + "type": "string", + "required": true + }, + { + "name": "Content-Type", + "x-ms-summary": "Content type", + "in": "header", + "required": true, + "type": "string", + "default": "application/json", + "description": "Content-Type", + "x-ms-visibility": "advanced" + }, + { + "name": "body", + "in": "body", + "schema": { + "type": "object", + "properties": { + "isDefault": { + "type": "string", + "description": "Makes this signature profile the default one", + "x-ms-summary": "Is Default" + }, + "isDisabled": { + "type": "string", + "description": "Disable this signature profile", + "x-ms-summary": "Is Disabled" + }, + "name": { + "type": "string", + "description": "The signature profile name", + "x-ms-summary": "Name" + }, + "documentType": { + "type": "string", + "description": "pdf, xml, word, excel, powerpoint, other", + "x-ms-summary": "Document Type" + }, + "signatureType": { + "type": "string", + "description": "pades,xades,xadesDetached,xadesDetachedManifest,cades,helios", + "x-ms-summary": "Signature type" + }, + "forceScrollDocument": { + "type": "boolean", + "description": "Force the signer to scroll to the bottom of the document", + "x-ms-summary": "Force to scroll to the bottom of the document" + }, + "pdfVisibleSignatureMode": { + "type": "string", + "description": "Visible signature mode (allowed, disabled, noImage)", + "x-ms-summary": "Visible signature mode" + }, + "pdfSignatureImageText": { + "type": "string", + "description": "Text displayed in signatures pads", + "x-ms-summary": "Signature text" + }, + "pdfSignatureImageTextColor": { + "type": "string", + "description": "Color of the text displayed in the singatures pads", + "x-ms-summary": "Signature text color" + }, + "pdfSignatureImageTextSize": { + "type": "number", + "description": "Size of the text displayed in the singatures pads", + "x-ms-summary": "Signature text size" + } + }, + "required": [ + "isDefault", + "name", + "documentType", + "signatureType", + "forceScrollDocument" + ] + }, + "required": true + } + ], + "responses": { + "200": { + "description": "Success", + "schema": { + "$ref": "#/definitions/signatureProfile" + }, + "headers": { + "Content-Type": { + "description": "Content-Type", + "type": "string" + } + } + } + } + } + }, + "/api/signatureProfiles/{spId}": { + "get": { + "summary": "Retrieve signature profile", + "tags": [ + "Signature Profiles" + ], + "description": "Retrieve a signature profile", + "operationId": "RetrieveSignatureProfile", + "parameters": [ + { + "name": "spId", + "description": "Id of the signature profile", + "x-ms-summary": "Signature profile Id", + "in": "path", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "Success", + "schema": { + "$ref": "#/definitions/signatureProfile" + } + } + } + }, + "patch": { + "summary": "Update signature profile", + "tags": [ + "Signature Profiles" + ], + "description": "Update a signature profile", + "operationId": "UpdateSignatureProfile", + "parameters": [ + { + "name": "spId", + "x-ms-summary": "Signature profile Id", + "description": "Id of the signature profile", + "in": "path", + "type": "string", + "required": true + }, + { + "name": "Content-Type", + "x-ms-summary": "Content type", + "in": "header", + "required": true, + "type": "string", + "default": "application/json", + "description": "Content-Type", + "x-ms-visibility": "advanced" + }, + { + "name": "body", + "in": "body", + "schema": { + "type": "object", + "properties": { + "isDefault": { + "type": "string", + "description": "Makes this signature profile the default one", + "x-ms-summary": "Is Default" + }, + "isDisabled": { + "type": "string", + "description": "Disable this signature profile", + "x-ms-summary": "Is Disabled" + }, + "name": { + "type": "string", + "description": "The signature profile name", + "x-ms-summary": "Name" + }, + "signatureType": { + "type": "string", + "description": "pades,xades,xadesDetached,xadesDetachedManifest,cades,helios", + "x-ms-summary": "Signature type" + }, + "forceScrollDocument": { + "type": "boolean", + "description": "Force the signer to scroll to the bottom of the document", + "x-ms-summary": "Force to scroll to the bottom of the document" + }, + "pdfVisibleSignatureMode": { + "type": "string", + "description": "Visible signature mode (allowed, disabled, noImage)", + "x-ms-summary": "Visible signature mode" + }, + "pdfSignatureImageText": { + "type": "string", + "description": "Text displayed in signatures pads", + "x-ms-summary": "Signature text" + }, + "pdfSignatureImageTextColor": { + "type": "string", + "description": "Color of the text displayed in the singatures pads", + "x-ms-summary": "Signature text color" + }, + "pdfSignatureImageTextSize": { + "type": "number", + "description": "Size of the text displayed in the singatures pads", + "x-ms-summary": "Signature text size" + } + } + }, + "required": true + } + ], + "responses": { + "200": { + "description": "Success", + "schema": { + "$ref": "#/definitions/signatureProfile" + }, + "headers": { + "Content-Type": { + "description": "Content-Type", + "type": "string" + } + } + } + } + } + }, + "/api/signatureProfiles": { + "get": { + "summary": "Search signature profiles", + "tags": [ + "Signature Profiles" + ], + "description": "Search signature profiles", + "operationId": "SearchSignatureProfiles", + "parameters": [ + { + "name": "text", + "x-ms-summary": "Search text", + "in": "query", + "type": "string", + "description": "Search text" + }, + { + "name": "items.isDefault", + "x-ms-summary": "Search default", + "in": "query", + "type": "string", + "description": "Search for default signature profiles" + }, + { + "name": "items.isDisabled", + "x-ms-summary": "Search disabled", + "in": "query", + "type": "string", + "description": "Search for disabled signature profiles" + }, + { + "name": "items.name", + "x-ms-summary": "Search name", + "in": "query", + "type": "string", + "description": "Search by signature profile name" + }, + { + "name": "items.documentType", + "x-ms-summary": "Search doc. type", + "in": "query", + "type": "string", + "description": "Search by document type" + }, + { + "name": "items.signatureType", + "x-ms-summary": "Search signature type", + "in": "query", + "type": "string", + "description": "Search by signature type" + }, + { + "name": "items.created", + "x-ms-summary": "Search creation date", + "in": "query", + "type": "string", + "description": "Search by creation date" + }, + { + "name": "items.updated", + "x-ms-summary": "Search update date", + "in": "query", + "type": "string", + "description": "Search by last update date" + }, + { + "name": "sortBy", + "x-ms-summary": "Sort by", + "in": "query", + "type": "string", + "description": "The field used to sort the search result" + }, + { + "name": "sortOrder", + "x-ms-summary": "Sort order", + "in": "query", + "type": "string", + "description": "The direction of the sorting" + }, + { + "name": "itemsPerPage", + "x-ms-summary": "Items per page", + "in": "query", + "type": "string", + "description": "Number of items per page in the response" + }, + { + "name": "pageIndex", + "x-ms-summary": "Page index", + "in": "query", + "type": "string", + "description": "Index of the returned page" + } + ], + "responses": { + "200": { + "description": "Success", + "schema": { + "$ref": "#/definitions/signatureProfiles" + } + } + } + } + }, + "/api/users/me": { + "get": { + "summary": "Retrieve me", + "tags": [ + "Users" + ], + "description": "Retrieve the connected user Id", + "operationId": "RetrieveMe", + "responses": { + "200": { + "description": "Success", + "schema": { + "$ref": "#/definitions/user" + }, + "headers": { + "Content-Type": { + "description": "Content-Type", + "type": "string" + } + } + } + } + } + }, + "/api/users/{userId}/workflows": { + "post": { + "summary": "Create workflow", + "tags": [ + "Workflows" + ], + "description": "Create a workflow", + "operationId": "CreateWorkflow", + "parameters": [ + { + "name": "userId", + "description": "User id of the workflow ownner", + "in": "path", + "required": true, + "type": "string", + "x-ms-summary": "User Id" + }, + { + "name": "Content-Type", + "description": "Content type", + "x-ms-summary": "Content type", + "in": "header", + "required": false, + "type": "string", + "default": "application/json", + "x-ms-visibility": "advanced" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of the workflow", + "x-ms-summary": "Name", + "x-ms-visibility": "important" + }, + "description": { + "type": "string", + "description": "Description of the workflow", + "x-ms-summary": "Description", + "title": "Description" + }, + "steps": { + "type": "array", + "items": { + "$ref": "#/definitions/step" + }, + "description": "Workflow steps", + "x-ms-summary": "Steps" + }, + "notifiedEvents": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Notified workflow events", + "x-ms-summary": "Notified Events", + "x-ms-visibility": "advanced" + }, + "watchers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "userId": { + "type": "string", + "description": "User id of the watcher" + }, + "notifiedEvents": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Workflow events that will be notified to this watcher" + }, + "email": { + "type": "string", + "description": "Email of the watcher" + } + } + }, + "description": "Principals who will receive notifications for this workflow", + "x-ms-summary": "Watchers", + "x-ms-visibility": "advanced" + }, + "templateId": { + "type": "string", + "description": "Id of the template from which the workflow derives", + "x-ms-summary": "Template Id", + "x-ms-visibility": "advanced" + }, + "layoutId": { + "type": "string", + "description": "Metadata layout used by the worklow", + "x-ms-summary": "Layout Id", + "x-ms-visibility": "advanced" + }, + "data1": { + "type": "string", + "description": "First metadata", + "x-ms-visibility": "advanced" + }, + "data2": { + "type": "string", + "description": "Second metadata", + "x-ms-visibility": "advanced" + }, + "data3": { + "type": "string", + "description": "Third metadata", + "x-ms-visibility": "advanced" + }, + "data4": { + "type": "string", + "description": "Fourth metadata", + "x-ms-visibility": "advanced" + }, + "data5": { + "type": "string", + "description": "Fifth metadata", + "x-ms-visibility": "advanced" + }, + "data6": { + "type": "string", + "description": "Sixth metadata", + "x-ms-visibility": "advanced" + }, + "data7": { + "type": "string", + "description": "Seventh metadata", + "x-ms-visibility": "advanced" + }, + "data8": { + "type": "string", + "description": "Heighth metadata", + "x-ms-visibility": "advanced" + } + }, + "required": [ + "name" + ] + } + } + ], + "responses": { + "200": { + "description": "Success", + "schema": { + "$ref": "#/definitions/workflow" + }, + "headers": { + "Content-Type": { + "description": "Content-Type", + "type": "string" + } + } + } + } + } + }, + "/api/workflows/{workflowId}": { + "get": { + "summary": "Retrieve workflow", + "tags": [ + "Workflows" + ], + "description": "Retrieve workflow from workflow id", + "operationId": "RetrieveWorkflow", + "parameters": [ + { + "name": "workflowId", + "description": "Id of the workflow", + "x-ms-summary": "Workflow Id", + "in": "path", + "type": "string", + "required": true + } + ], + "responses": { + "200": { + "description": "Success", + "schema": { + "$ref": "#/definitions/workflow" + }, + "headers": { + "Content-Type": { + "description": "Content-Type", + "type": "string" + } + } + } + } + }, + "delete": { + "summary": "Delete workflow", + "tags": [ + "Workflows" + ], + "description": "Delete a workflow", + "operationId": "DeleteWorkflow", + "parameters": [ + { + "name": "workflowId", + "description": "Id of the workflow to delete", + "x-ms-summary": "Workflow Id", + "in": "path", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "Success", + "schema": { + "$ref": "#/definitions/workflow" + }, + "headers": { + "Content-Type": { + "description": "Content-Type", + "type": "string" + } + } + } + } + }, + "patch": { + "summary": "Update workflow", + "tags": [ + "Workflows" + ], + "description": "Update a workflow", + "operationId": "UpdateWorkflow", + "parameters": [ + { + "name": "workflowId", + "description": "Id of the workflow to update", + "x-ms-summary": "Workflow Id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "Content-Type", + "description": "Content type", + "x-ms-summary": "Content type", + "in": "header", + "required": false, + "type": "string", + "default": "application/json", + "x-ms-visibility": "advanced" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "userId": { + "type": "string", + "description": "Id of the workflow owner", + "x-ms-summary": "User Id" + }, + "name": { + "type": "string", + "description": "Name of the workflow", + "x-ms-summary": "Name" + }, + "description": { + "type": "string", + "description": "Description of the workflow", + "x-ms-summary": "Description", + "title": "Description" + }, + "steps": { + "type": "array", + "items": { + "$ref": "#/definitions/step" + }, + "description": "Workflow steps", + "x-ms-summary": "Steps" + }, + "notifiedEvents": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Notified workflow events", + "x-ms-summary": "Notified Events", + "x-ms-visibility": "advanced" + }, + "watchers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "userId": { + "type": "string", + "description": "Watcher user Id" + }, + "notifiedEvents": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Workflow events that will be notified to this watcher" + }, + "email": { + "type": "string", + "description": "email" + } + } + }, + "description": "Principals who will receive notifications for this workflow", + "x-ms-summary": "Watchers", + "x-ms-visibility": "advanced" + }, + "workflowStatus": { + "type": "string", + "description": "Current status of the workflow", + "x-ms-summary": "Workflow Status" + }, + "data1": { + "type": "string", + "description": "first metadata", + "x-ms-visibility": "advanced" + }, + "data2": { + "type": "string", + "description": "second metadata", + "x-ms-visibility": "advanced" + }, + "data3": { + "type": "string", + "description": "third metadata", + "x-ms-visibility": "advanced" + }, + "data4": { + "type": "string", + "description": "fourth metadata", + "x-ms-visibility": "advanced" + }, + "data5": { + "type": "string", + "description": "fifth metadata", + "x-ms-visibility": "advanced" + }, + "data6": { + "type": "string", + "description": "sixth metadata", + "x-ms-visibility": "advanced" + }, + "data7": { + "type": "string", + "description": "seventh metadata", + "x-ms-visibility": "advanced" + }, + "data8": { + "type": "string", + "description": "heighth metadata", + "x-ms-visibility": "advanced" + } + } + } + } + ], + "responses": { + "200": { + "description": "Success", + "schema": { + "$ref": "#/definitions/workflow" + }, + "headers": { + "Content-Type": { + "description": "Content-Type", + "type": "string" + } + } + } + } + } + }, + "/api/workflows": { + "get": { + "summary": "Search workflows", + "tags": [ + "Workflows" + ], + "description": "Search workflows", + "operationId": "SearchWorkflows", + "parameters": [ + { + "name": "Accept", + "x-ms-summary": "Accept", + "description": "Accept", + "x-ms-visibility": "advanced", + "in": "header", + "required": false, + "type": "string", + "default": "application/json" + }, + { + "name": "text", + "x-ms-summary": "Search text", + "in": "query", + "type": "string", + "description": "Search text" + }, + { + "name": "items.layoutId", + "x-ms-summary": "Search metadata layout", + "in": "query", + "type": "string", + "description": "Search by metadata layout" + }, + { + "name": "items.templateId", + "x-ms-summary": "Search template", + "in": "query", + "type": "string", + "description": "Search by workflow template" + }, + { + "name": "items.groupId", + "x-ms-summary": "Search group", + "in": "query", + "type": "string", + "description": "Search by users group" + }, + { + "name": "items.userId", + "x-ms-summary": "Search user", + "in": "query", + "type": "string", + "description": "Search by owner" + }, + { + "name": "items.email", + "x-ms-summary": "Search email", + "in": "query", + "type": "string", + "description": "Search by owner's email" + }, + { + "name": "items.firstname", + "x-ms-summary": "Search first name", + "in": "query", + "type": "string", + "description": "Search by owner's first name" + }, + { + "name": "items.lastname", + "x-ms-summary": "Search last name", + "in": "query", + "type": "string", + "description": "Search by owner's last name" + }, + { + "name": "items.workflowStatus", + "x-ms-summary": "Search status", + "in": "query", + "type": "string", + "description": "Search by workflow status" + }, + { + "name": "items.data1", + "x-ms-summary": "Search metadata 1", + "in": "query", + "type": "string", + "description": "Search by value of metadata 1", + "x-ms-visibility": "advanced" + }, + { + "name": "items.data2", + "x-ms-summary": "Search metadata 2", + "in": "query", + "type": "string", + "description": "Search by value of metadata 2", + "x-ms-visibility": "advanced" + }, + { + "name": "items.data3", + "x-ms-summary": "Search metadata 3", + "in": "query", + "type": "string", + "description": "Search by value of metadata 3", + "x-ms-visibility": "advanced" + }, + { + "name": "items.data4", + "x-ms-summary": "Search metadata 4", + "in": "query", + "type": "string", + "description": "Search by value of metadata 4", + "x-ms-visibility": "advanced" + }, + { + "name": "items.data5", + "x-ms-summary": "Search metadata 5", + "in": "query", + "type": "string", + "description": "Search by value of metadata 5", + "x-ms-visibility": "advanced" + }, + { + "name": "items.data6", + "x-ms-summary": "Search metadata 6", + "in": "query", + "type": "string", + "description": "Search by value of metadata 6", + "x-ms-visibility": "advanced" + }, + { + "name": "items.data7", + "x-ms-summary": "Search metadata 7", + "in": "query", + "type": "string", + "description": "Search by value of metadata 7", + "x-ms-visibility": "advanced" + }, + { + "name": "items.data8", + "x-ms-summary": "Search metadata 8", + "in": "query", + "type": "string", + "description": "Search by value of metadata 8", + "x-ms-visibility": "advanced" + }, + { + "name": "items.created", + "x-ms-summary": "Search creation date", + "in": "query", + "type": "string", + "description": "Search by creation date" + }, + { + "name": "items.updated", + "x-ms-summary": "Search update date", + "in": "query", + "type": "string", + "description": "Search by last update date" + }, + { + "name": "items.started", + "x-ms-summary": "Search start date", + "in": "query", + "type": "string", + "description": "Search by start date" + }, + { + "name": "sortBy", + "x-ms-summary": "Sort by", + "in": "query", + "type": "string", + "description": "The field used to sort the search result" + }, + { + "name": "sortOrder", + "x-ms-summary": "Sort order", + "in": "query", + "type": "string", + "description": "The direction of the sorting" + }, + { + "name": "itemsPerPage", + "x-ms-summary": "Items per page", + "in": "query", + "type": "string", + "description": "Number of items per page in the response" + }, + { + "name": "pageIndex", + "x-ms-summary": "Page index", + "in": "query", + "type": "string", + "description": "Index of the returned page" + } + ], + "responses": { + "200": { + "description": "Success", + "schema": { + "$ref": "#/definitions/workflows" + } + } + } + } + }, + "/api/workflows/{workflowId}/invite": { + "post": { + "summary": "Retrieve constent page url", + "tags": [ + "Workflows" + ], + "description": "Create and retrieve the consent page url for a recipient", + "operationId": "WorkflowInvite", + "parameters": [ + { + "name": "workflowId", + "description": "Id of the workflow", + "x-ms-summary": "Workflow Id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "recipientEmail": { + "type": "string", + "description": "Email of the concerned recipient", + "x-ms-summary": "Recipient Email" + } + } + } + } + ], + "responses": { + "200": { + "description": "Success", + "schema": { + "type": "object", + "properties": { + "inviteUrl": { + "type": "string", + "description": "The consent page url for the concerned recipient", + "x-ms-summary": "The consent page url for the concerned recipient" + } + } + } + } + } + } + }, + "/api/workflows/{workflowId}/downloadEvidences": { + "get": { + "summary": "Download evidences file", + "tags": [ + "Workflows" + ], + "description": "Download the workflow evidences file", + "operationId": "WorkflowEvidences", + "produces": [ + "application/zip" + ], + "parameters": [ + { + "name": "workflowId", + "description": "Id of the workflow", + "x-ms-summary": "Workflow Id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "Accept", + "description": "Accept", + "x-ms-summary": "Accept", + "in": "header", + "required": true, + "type": "string", + "default": "application/zip", + "x-ms-visibility": "advanced" + } + ], + "responses": { + "200": { + "description": "Success", + "schema": { + "type": "string", + "format": "binary" + }, + "headers": { + "Content-Type": { + "description": "Content-Type", + "type": "string" + }, + "Content-Disposition": { + "description": "Content-Disposition", + "type": "string" + } + } + } + } + } + }, + "/api/workflows/{workflowId}/parts": { + "post": { + "summary": "Create part", + "description": "Create a document part", + "operationId": "CreatePart", + "tags": [ + "Workflow Documents" + ], + "consumes": [ + "application/octet-stream" + ], + "parameters": [ + { + "name": "workflowId", + "description": "Id of the concerned workflow", + "x-ms-summary": "Workflow Id", + "in": "path", + "type": "string", + "required": true + }, + { + "name": "Content-Type", + "x-ms-summary": "Content type", + "in": "header", + "required": true, + "type": "string", + "description": "Content-Type", + "default": "application/pdf" + }, + { + "name": "Content-Disposition", + "x-ms-summary": "Cotent Disposition", + "in": "header", + "required": true, + "type": "string", + "description": "Content-Dispotion", + "default": "attachment; filename=document.pdf" + }, + { + "name": "createDocuments", + "description": "Create a document from this part", + "x-ms-summary": "Create Document", + "default": "true", + "in": "query", + "type": "string" + }, + { + "name": "ignoreAttachments", + "description": "Attachments will be ignored", + "x-ms-summary": "Ignore attachments", + "default": "true", + "in": "query", + "type": "string" + }, + { + "name": "signatureProfileId", + "description": "Part considered as an attachment if omitted", + "x-ms-summary": "Signature profile Id", + "in": "query", + "type": "string" + }, + { + "name": "unzip", + "description": "Unzip files", + "x-ms-summary": "Unzip", + "default": "false", + "in": "query", + "type": "string" + }, + { + "name": "pdf2pdfa", + "description": "Convert pdf to pdf/A", + "x-ms-summary": "Pdf to PdfA", + "default": "auto", + "in": "query", + "type": "string" + }, + { + "name": "document", + "in": "body", + "description": "The uploaded file data", + "x-ms-summary": "Document", + "required": true, + "schema": { + "type": "string", + "format": "binary" + } + } + ], + "responses": { + "200": { + "description": "Success", + "schema": { + "type": "object", + "properties": { + "documents": { + "type": "array", + "items": { + "$ref": "#/definitions/document" + }, + "description": "Created documents" + }, + "ignoredAttachments": { + "type": "integer", + "format": "int32", + "description": "ignoredAttachments" + }, + "parts": { + "type": "array", + "items": { + "$ref": "#/definitions/part" + }, + "description": "parts" + } + } + }, + "headers": { + "Content-Type": { + "description": "Content-Type", + "type": "string" + } + } + } + } + } + }, + "/api/workflows/{workflowId}/documents": { + "post": { + "summary": "Create document", + "description": "Create a document from previouly created parts", + "operationId": "CreateDocument", + "tags": [ + "Workflow Documents" + ], + "parameters": [ + { + "name": "workflowId", + "description": "Id of the concerned workflow", + "x-ms-summary": "Workflow Id", + "in": "path", + "type": "string", + "required": true + }, + { + "name": "Content-Type", + "x-ms-summary": "Content type", + "in": "header", + "required": true, + "type": "string", + "description": "Content-Type", + "default": "application/json", + "x-ms-visibility": "advanced" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "parts": { + "type": "array", + "items": { + "$ref": "#/definitions/part" + } + }, + "signatureProfileId": { + "type": "string", + "description": "The signature profile for this document" + } + } + } + } + ], + "responses": { + "200": { + "description": "Success", + "schema": { + "$ref": "#/definitions/document" + } + } + } + } + }, + "/api/documents/{documentId}": { + "get": { + "summary": "Retrieve document", + "description": "Retrieve a document", + "operationId": "RetrieveDocument", + "tags": [ + "Workflow Documents" + ], + "parameters": [ + { + "name": "documentId", + "description": "Id of the document", + "x-ms-summary": "Document Id", + "in": "path", + "type": "string", + "required": true + } + ], + "responses": { + "200": { + "description": "Success", + "schema": { + "$ref": "#/definitions/document" + } + } + } + }, + "delete": { + "summary": "Delete document", + "description": "Delete a document", + "operationId": "DeleteDocument", + "tags": [ + "Workflow Documents" + ], + "parameters": [ + { + "name": "documentId", + "description": "Id of the document", + "x-ms-summary": "Document Id", + "in": "path", + "type": "string", + "required": true + } + ], + "responses": { + "200": { + "description": "Success", + "schema": { + "$ref": "#/definitions/document" + } + } + } + }, + "patch": { + "summary": "Update document", + "description": "Update a document", + "operationId": "UpdateDocument", + "tags": [ + "Workflow Documents" + ], + "parameters": [ + { + "name": "documentId", + "description": "Id of the document", + "x-ms-summary": "Document Id", + "in": "path", + "type": "string", + "required": true + }, + { + "name": "Content-Type", + "x-ms-summary": "Content type", + "in": "header", + "required": true, + "type": "string", + "description": "Content-Type", + "default": "application/json", + "x-ms-visibility": "advanced" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "signatureProfileId": { + "type": "string", + "description": "The signature profile to aply to this document" + }, + "pdfSignatureFields": { + "type": "array", + "items": { + "$ref": "#/definitions/pdfSigField" + } + } + } + } + } + ], + "responses": { + "200": { + "description": "Success", + "schema": { + "$ref": "#/definitions/document" + } + } + } + } + }, + "/api/documents": { + "get": { + "summary": "Search documents", + "tags": [ + "Workflow Documents" + ], + "description": "Search documents", + "operationId": "SearchDocuments", + "parameters": [ + { + "name": "text", + "x-ms-summary": "Search text", + "in": "query", + "type": "string", + "description": "Search text" + }, + { + "name": "items.layoutId", + "x-ms-summary": "Search metadata layout", + "in": "query", + "type": "string", + "description": "Search by metadata layout" + }, + { + "name": "items.groupId", + "x-ms-summary": "Search group", + "in": "query", + "type": "string", + "description": "Search by users group" + }, + { + "name": "items.userId", + "x-ms-summary": "Search user", + "in": "query", + "type": "string", + "description": "Search by owner" + }, + { + "name": "items.workflowId", + "x-ms-summary": "Search workflow id", + "in": "query", + "type": "string", + "description": "Search by workflow Id" + }, + { + "name": "items.workflowName", + "x-ms-summary": "Search workflow name", + "in": "query", + "type": "string", + "description": "Search by workflow name" + }, + { + "name": "items.data1", + "x-ms-summary": "Search metadata 1", + "in": "query", + "type": "string", + "description": "Search by value of metadata 1", + "x-ms-visibility": "advanced" + }, + { + "name": "items.data2", + "x-ms-summary": "Search metadata 2", + "in": "query", + "type": "string", + "description": "Search by value of metadata 2", + "x-ms-visibility": "advanced" + }, + { + "name": "items.data3", + "x-ms-summary": "Search metadata 3", + "in": "query", + "type": "string", + "description": "Search by value of metadata 3", + "x-ms-visibility": "advanced" + }, + { + "name": "items.data4", + "x-ms-summary": "Search metadata 4", + "in": "query", + "type": "string", + "description": "Search by value of metadata 4", + "x-ms-visibility": "advanced" + }, + { + "name": "items.data5", + "x-ms-summary": "Search metadata 5", + "in": "query", + "type": "string", + "description": "Search by value of metadata 5", + "x-ms-visibility": "advanced" + }, + { + "name": "items.data6", + "x-ms-summary": "Search metadata 6", + "in": "query", + "type": "string", + "description": "Search by value of metadata 6", + "x-ms-visibility": "advanced" + }, + { + "name": "items.data7", + "x-ms-summary": "Search metadata 7", + "in": "query", + "type": "string", + "description": "Search by value of metadata 7", + "x-ms-visibility": "advanced" + }, + { + "name": "items.data8", + "x-ms-summary": "Search metadata 8", + "in": "query", + "type": "string", + "description": "Search by value of metadata 8", + "x-ms-visibility": "advanced" + }, + { + "name": "items.signatureProfileId", + "x-ms-summary": "Search signature profile", + "in": "query", + "type": "string", + "description": "Search by signature profile" + }, + { + "name": "items.created", + "x-ms-summary": "Search creation date", + "in": "query", + "type": "string", + "description": "Search by creation date" + }, + { + "name": "items.updated", + "x-ms-summary": "Search update date", + "in": "query", + "type": "string", + "description": "Search by last update date" + }, + { + "name": "sortBy", + "x-ms-summary": "Sort by", + "in": "query", + "type": "string", + "description": "The field used to sort the search result" + }, + { + "name": "sortOrder", + "x-ms-summary": "Sort order", + "in": "query", + "type": "string", + "description": "The direction of the sorting" + }, + { + "name": "itemsPerPage", + "x-ms-summary": "Items per page", + "in": "query", + "type": "string", + "description": "Number of items per page in the response" + }, + { + "name": "pageIndex", + "x-ms-summary": "Page index", + "in": "query", + "type": "string", + "description": "Index of the returned page" + } + ], + "responses": { + "200": { + "description": "Success", + "schema": { + "type": "object", + "properties": { + "items": { + "$ref": "#/definitions/documents" + } + } + } + } + } + } + }, + "/api/workflows/{workflowId}/downloadDocuments": { + "get": { + "summary": "Download a workflow documents", + "tags": [ + "Workflow Documents" + ], + "description": "Download the workflow documents", + "operationId": "DownloadDocuments", + "produces": [ + "application/octet-stream" + ], + "parameters": [ + { + "name": "workflowId", + "description": "Id of the workflow", + "x-ms-summary": "Workflow Id", + "in": "path", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "Success", + "schema": { + "type": "string", + "format": "binary" + }, + "headers": { + "Content-Type": { + "description": "Content-Type", + "type": "string" + }, + "Content-Disposition": { + "description": "Content-Disposition", + "type": "string" + } + } + } + } + } + }, + "/api/tenants/{tenantId}/layouts": { + "post": { + "summary": "Create metadata layout", + "tags": [ + "Workflow Layouts" + ], + "description": "Create a metadata layout", + "operationId": "CreateLayout", + "parameters": [ + { + "name": "tenantId", + "description": "Id of the layout", + "x-ms-summary": "Tenant Id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "Content-Type", + "x-ms-summary": "Content type", + "type": "string", + "description": "Content-Type", + "in": "header", + "default": "application/json", + "required": true, + "x-ms-visibility": "advanced" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The layout name", + "x-ms-summary": "Name" + }, + "isDisabled": { + "type": "boolean", + "description": "If set to true the layout will be disabled", + "x-ms-summary": "Is disabled" + }, + "dataConfigurations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "slot": { + "type": "string", + "description": "Metadata item (data1 to data8)" + }, + "default": { + "type": "string", + "description": "Metadata default value in this layout" + }, + "optional": { + "type": "boolean", + "description": "If true, providing a value is not mandatory" + }, + "readonly": { + "type": "boolean", + "description": "Wether the value can be overriden" + }, + "rememberLastValue": { + "type": "boolean", + "description": "If set to true, the value persists accross workflows" + } + } + } + } + }, + "required": [ + "name" + ] + } + } + ], + "responses": { + "200": { + "description": "Success", + "schema": { + "$ref": "#/definitions/layout" + } + } + } + } + }, + "/api/layouts/{layoutId}": { + "get": { + "summary": "Retrieve metadata layout", + "tags": [ + "Workflow Layouts" + ], + "description": "Retrieve a workflow layout", + "operationId": "RetrieveLayout", + "parameters": [ + { + "name": "layoutId", + "description": "Id of the layout", + "x-ms-summary": "Layout Id", + "in": "path", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "Success", + "schema": { + "$ref": "#/definitions/layout" + } + } + } + }, + "patch": { + "summary": "Update metadata layout", + "tags": [ + "Workflow Layouts" + ], + "description": "Update a metadata layout", + "operationId": "UpdateLayout", + "parameters": [ + { + "name": "layoutId", + "description": "Id of the layout", + "x-ms-summary": "Tenant Id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "Content-Type", + "x-ms-summary": "Content type", + "type": "string", + "description": "Content-Type", + "in": "header", + "default": "application/json", + "required": true, + "x-ms-visibility": "advanced" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The layout name", + "x-ms-summary": "Name" + }, + "isDisabled": { + "type": "boolean", + "description": "If set to true the layout will be disabled", + "x-ms-summary": "Is disabled" + }, + "dataConfigurations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "slot": { + "type": "string", + "description": "Metadata item (data1 to data8)" + }, + "default": { + "type": "string", + "description": "Metadata default value in this layout" + }, + "optional": { + "type": "boolean", + "description": "If true, providing a value is not mandatory" + }, + "readonly": { + "type": "boolean", + "description": "Wether the value can be overriden" + }, + "rememberLastValue": { + "type": "boolean", + "description": "If set to true, the value persists accross workflows" + } + } + } + } + }, + "required": [ + "name" + ] + } + } + ], + "responses": { + "200": { + "description": "Success", + "schema": { + "$ref": "#/definitions/layout" + } + } + } + } + }, + "/api/layouts": { + "get": { + "summary": "Search metadata layouts", + "tags": [ + "Workflow Layouts" + ], + "description": "Search workflow layouts", + "operationId": "SearchLayouts", + "parameters": [ + { + "name": "text", + "x-ms-summary": "Search text", + "in": "query", + "type": "string", + "description": "Search text" + }, + { + "name": "items.isDisabled", + "x-ms-summary": "Search disabled", + "in": "query", + "type": "string", + "description": "Search for disabled layouts" + }, + { + "name": "items.name", + "x-ms-summary": "Search name", + "in": "query", + "type": "string", + "description": "Search by layout name" + }, + { + "name": "items.dataConfigurations.slot", + "x-ms-summary": "Search metadata", + "in": "query", + "type": "string", + "description": "Search by presence of metadata" + }, + { + "name": "items.created", + "x-ms-summary": "Search creation date", + "in": "query", + "type": "string", + "description": "Search by creation date" + }, + { + "name": "items.updated", + "x-ms-summary": "Search update date", + "in": "query", + "type": "string", + "description": "Search by last update date" + }, + { + "name": "sortBy", + "x-ms-summary": "Sort by", + "in": "query", + "type": "string", + "description": "The field used to sort the search result" + }, + { + "name": "sortOrder", + "x-ms-summary": "Sort order", + "in": "query", + "type": "string", + "description": "The direction of the sorting" + }, + { + "name": "itemsPerPage", + "x-ms-summary": "Items per page", + "in": "query", + "type": "string", + "description": "Number of items per page in the response" + }, + { + "name": "pageIndex", + "x-ms-summary": "Page index", + "in": "query", + "type": "string", + "description": "Index of the returned page" + } + ], + "responses": { + "200": { + "description": "Success", + "schema": { + "type": "object", + "properties": { + "items": { + "$ref": "#/definitions/layouts" + } + } + } + } + } + } + } + }, + "definitions": { + "consentPage": { + "type": "object", + "properties": { + "allowOrganization": { + "type": "boolean", + "description": "Allows the use of organizations" + }, + "authenticateUser": { + "type": "boolean", + "description": "Imposes signer authentication" + }, + "clientId": { + "type": "string", + "description": "Client Id" + }, + "created": { + "type": "number", + "description": "Creation date" + }, + "emUrl": { + "type": "string", + "description": "Evidences manager Url" + }, + "hideDownloads": { + "type": "boolean", + "description": "Documents download links are not diplayed on consent pages" + }, + "hideMobileQrCode": { + "type": "boolean", + "description": "Hides the QR codes on constent pages" + }, + "id": { + "type": "string", + "description": "The consent page Id" + }, + "isCountryRequired": { + "type": "boolean", + "description": "Makes country mandatory in signers information" + }, + "isDisabled": { + "type": "boolean", + "description": "Consent page is disabled" + }, + "logoResourceId": { + "type": "string", + "description": "Id of the consent page logo resource" + }, + "name": { + "type": "string", + "description": "The consent page name" + }, + "primaryColor": { + "type": "string", + "description": "Consent page primary color" + }, + "secondaryColor": { + "type": "string", + "description": "Consent page secondary color" + }, + "sharedPassphrase": { + "type": "string", + "description": "Shared passphrase" + }, + "signing mode": { + "type": "string", + "description": "Signing mode (local or server)" + }, + "stepType": { + "type": "string", + "description": "step type (signature or approval)" + }, + "tenantId": { + "type": "string", + "description": "Tenant Id" + }, + "tsaUrl": { + "type": "string", + "description": "Timestamp authority Url" + }, + "updated": { + "type": "number", + "description": "Last modification date" + }, + "verifyEmail": { + "type": "boolean", + "description": "If set to tue, signers will receive OTPs by emails" + }, + "verifyPhoneNumber": { + "type": "boolean", + "description": "If set to true, signers will receive OTPs by text messages" + } + } + }, + "consentPages": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/consentPage" + }, + "description": "items" + }, + "itemsPerPage": { + "type": "integer", + "format": "int32", + "description": "itemsPerPage" + }, + "pageIndex": { + "type": "integer", + "format": "int32", + "description": "pageIndex" + }, + "totalItems": { + "type": "integer", + "format": "int32", + "description": "totalItems" + } + } + }, + "contact": { + "type": "object", + "properties": { + "country": { + "type": "string", + "description": "Contact country" + }, + "created": { + "type": "integer", + "format": "int32", + "description": "Contact creation date" + }, + "email": { + "type": "string", + "description": "Contact email" + }, + "firstName": { + "type": "string", + "description": "Contact firstName" + }, + "id": { + "type": "string", + "description": "Contact id" + }, + "lastName": { + "type": "string", + "description": "Contact lastName" + }, + "name": { + "type": "string", + "description": "Contact name (firts name + last name))" + }, + "phoneNumber": { + "type": "string", + "description": "Contact phone number" + }, + "tenantId": { + "type": "string", + "description": "Tenant Id" + }, + "updated": { + "type": "integer", + "format": "int32", + "description": "Contact last modification date" + }, + "userId": { + "type": "string", + "description": "Id of the contact owner" + } + } + }, + "contacts": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/contact" + }, + "description": "items" + }, + "itemsPerPage": { + "type": "integer", + "format": "int32", + "description": "itemsPerPage" + }, + "pageIndex": { + "type": "integer", + "format": "int32", + "description": "pageIndex" + }, + "totalItems": { + "type": "integer", + "format": "int32", + "description": "totalItems" + } + } + }, + "dataMapping": { + "type": "object", + "properties": { + "data1": { + "type": "object", + "properties": { + "description": { + "type": "string", + "description": "Metadata description" + }, + "name": { + "type": "string", + "description": "Metadata name" + }, + "pattern": { + "type": "string", + "description": "Metadata pattern" + }, + "options": { + "type": "array", + "items": { + "type": "object", + "properties": { + "value": { + "type": "string", + "description": "Metadata value" + } + } + }, + "description": "options" + }, + "type": { + "type": "string", + "description": "type" + } + }, + "description": "data1" + }, + "data2": { + "type": "object", + "properties": { + "description": { + "type": "string", + "description": "Metadata description" + }, + "name": { + "type": "string", + "description": "Metadata name" + }, + "pattern": { + "type": "string", + "description": "Metadata pattern" + }, + "options": { + "type": "array", + "items": { + "type": "object", + "properties": { + "value": { + "type": "string", + "description": "Metadata value" + } + } + }, + "description": "options" + }, + "type": { + "type": "string", + "description": "type" + } + }, + "description": "data2" + }, + "data3": { + "type": "object", + "properties": { + "description": { + "type": "string", + "description": "Metadata description" + }, + "name": { + "type": "string", + "description": "Metadata name" + }, + "pattern": { + "type": "string", + "description": "Metadata pattern" + }, + "options": { + "type": "array", + "items": { + "type": "object", + "properties": { + "value": { + "type": "string", + "description": "Metadata value" + } + } + }, + "description": "options" + }, + "type": { + "type": "string", + "description": "type" + } + }, + "description": "data3" + }, + "data4": { + "type": "object", + "properties": { + "description": { + "type": "string", + "description": "Metadata description" + }, + "name": { + "type": "string", + "description": "Metadata name" + }, + "pattern": { + "type": "string", + "description": "Metadata pattern" + }, + "options": { + "type": "array", + "items": { + "type": "object", + "properties": { + "value": { + "type": "string", + "description": "Metadata value" + } + } + }, + "description": "options" + }, + "type": { + "type": "string", + "description": "type" + } + }, + "description": "data4" + }, + "data5": { + "type": "object", + "properties": { + "description": { + "type": "string", + "description": "Metadata description" + }, + "name": { + "type": "string", + "description": "Metadata name" + }, + "pattern": { + "type": "string", + "description": "Metadata pattern" + }, + "options": { + "type": "array", + "items": { + "type": "object", + "properties": { + "value": { + "type": "string", + "description": "Metadata value" + } + } + }, + "description": "options" + }, + "type": { + "type": "string", + "description": "type" + } + }, + "description": "data5" + }, + "data6": { + "type": "object", + "properties": { + "description": { + "type": "string", + "description": "Metadata description" + }, + "name": { + "type": "string", + "description": "Metadata name" + }, + "pattern": { + "type": "string", + "description": "Metadata pattern" + }, + "options": { + "type": "array", + "items": { + "type": "object", + "properties": { + "value": { + "type": "string", + "description": "Metadata value" + } + } + }, + "description": "options" + }, + "type": { + "type": "string", + "description": "type" + } + }, + "description": "data6" + }, + "data7": { + "type": "object", + "properties": { + "description": { + "type": "string", + "description": "Metadata description" + }, + "name": { + "type": "string", + "description": "Metadataname" + }, + "pattern": { + "type": "string", + "description": "Metadata pattern" + }, + "options": { + "type": "array", + "items": { + "type": "object", + "properties": { + "value": { + "type": "string", + "description": "Metadatavalue" + } + } + }, + "description": "options" + }, + "type": { + "type": "string", + "description": "type" + } + }, + "description": "data7" + }, + "data8": { + "type": "object", + "properties": { + "description": { + "type": "string", + "description": "Metadata description" + }, + "name": { + "type": "string", + "description": "Metadata name" + }, + "pattern": { + "type": "string", + "description": "Metadata pattern" + }, + "options": { + "type": "array", + "items": { + "type": "object", + "properties": { + "value": { + "type": "string", + "description": "Metadata value" + } + } + }, + "description": "options" + }, + "type": { + "type": "string", + "description": "type" + } + }, + "description": "data8" + } + } + }, + "document": { + "type": "object", + "properties": { + "created": { + "type": "integer", + "format": "int32", + "description": "Creation date" + }, + "groupId": { + "type": "string", + "description": "Id fo the document owner's group" + }, + "id": { + "type": "string", + "description": "Id of the document" + }, + "parts": { + "type": "array", + "items": { + "$ref": "#/definitions/part" + }, + "description": "parts" + }, + "pdfSignatureFields": { + "type": "array", + "items": { + "$ref": "#/definitions/pdfSigField" + }, + "description": "pdfSignatureFields" + }, + "signatureProfileId": { + "type": "string", + "description": "Id of the signature profile of the document" + }, + "tenantId": { + "type": "string", + "description": "Tenant id" + }, + "updated": { + "type": "integer", + "format": "int32", + "description": "Last modification date" + }, + "userId": { + "type": "string", + "description": "Document owner user Id" + }, + "viewAuthorizedGroups": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of groups allowed to view the document" + }, + "viewAuthorizedUsers": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of users allowzd to view the document" + }, + "workflowId": { + "type": "string", + "description": "Id of the workflow to which the document belongs" + }, + "workflowName": { + "type": "string", + "description": "Name of the workflow to which the document belongs" + } + } + }, + "documents": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/document" + }, + "description": "items" + }, + "itemsPerPage": { + "type": "integer", + "format": "int32", + "description": "itemsPerPage" + }, + "pageIndex": { + "type": "integer", + "format": "int32", + "description": "pageIndex" + }, + "totalItems": { + "type": "integer", + "format": "int32", + "description": "totalItems" + } + } + }, + "layout": { + "type": "object", + "description": "Metadata layout", + "properties": { + "created": { + "type": "number", + "description": "Creation date" + }, + "id": { + "type": "string", + "description": "Layout Id" + }, + "isDisabled": { + "type": "boolean", + "description": "If set to true the layout has been disbled" + }, + "name": { + "type": "string", + "description": "The name of the Layout" + }, + "tenantId": { + "type": "string", + "description": "Id of the tenant" + }, + "updated": { + "type": "number", + "description": "Last modification date" + }, + "dataConfigurations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "slot": { + "type": "string", + "description": "Metadata item (data1 to data8)" + }, + "default": { + "type": "string", + "description": "Metadata default value in this layout" + }, + "optional": { + "type": "boolean", + "description": "If true, providing a value for this metadata is not mandatory" + }, + "readonly": { + "type": "boolean", + "description": "Wether the value can be overriden" + }, + "rememberLastValue": { + "type": "boolean", + "description": "If set to true, the value persists accross workflows" + } + } + } + } + } + }, + "layouts": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "object", + "properties": { + "created": { + "type": "number", + "description": "Creation date" + }, + "dataConfigurations": { + "type": "array", + "items": { + "$ref": "#/definitions/layout" + } + } + } + } + }, + "itemsPerPage": { + "type": "number", + "description": "Number of items per page" + }, + "pageIndex": { + "type": "number", + "description": "Index of the returned page" + }, + "totalItems": { + "type": "number", + "description": "Total number of items concerned by the request" + } + } + }, + "part": { + "type": "object", + "description": "Document part", + "properties": { + "contentType": { + "type": "string", + "description": "contentType" + }, + "filename": { + "type": "string", + "description": "filename" + }, + "hash": { + "type": "string", + "description": "hash" + }, + "size": { + "type": "integer", + "format": "int32", + "description": "size" + } + } + }, + "pdfSigField": { + "type": "object", + "properties": { + "imageHeight": { + "type": "number", + "format": "float", + "description": "imageHeight" + }, + "imagePage": { + "type": "number", + "format": "float", + "description": "imagePage" + }, + "imageWidth": { + "type": "number", + "format": "float", + "description": "imageWidth" + }, + "imageX": { + "type": "number", + "format": "float", + "description": "imageX" + }, + "imageY": { + "type": "number", + "format": "float", + "description": "imageY" + } + } + }, + "recipient": { + "type": "object", + "properties": { + "consentPageId": { + "type": "string", + "description": "Id of the consent page (signature level) associated to this recipient" + }, + "email": { + "type": "string", + "description": "recipient's email" + }, + "userId": { + "type": "string", + "description": "reference a LE user instead of creating a recipient on the fly" + }, + "phoneNumber": { + "type": "string", + "description": "reicpient's cell phone number" + }, + "firstName": { + "type": "string", + "description": "recipient's first name" + }, + "lastName": { + "type": "string", + "description": "recipient's last name" + }, + "country": { + "type": "string", + "description": "recipient's country code" + }, + "preferredLocale": { + "type": "string", + "description": "recipient's locale code" + }, + "organizationId": { + "type": "string", + "description": "Id of the LE organization of the recipient" + } + }, + "required": [ + "consentPageId", + "email" + ] + }, + "step": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "step Id", + "x-ms-visibility": "advanced" + }, + "stepType": { + "type": "string", + "description": "signature or approval" + }, + "recipients": { + "type": "array", + "items": { + "$ref": "#/definitions/recipient" + } + }, + "requiredRecipients": { + "type": "number", + "description": "minimum number of signers who must sign to take the next step" + }, + "validityPeriod": { + "type": "number", + "description": "step validity duration" + }, + "inviteperiod": { + "type": "number", + "description": "signature reminders frequency" + }, + "maxInvites": { + "type": "number", + "description": "maximum number of signature reminders" + }, + "sendDownloadLink": { + "type": "boolean", + "description": "controls the delivery of the signed document to signers" + }, + "allowComments": { + "type": "boolean", + "description": "allows/forbids comments on this step" + }, + "hideAttachments": { + "type": "boolean", + "description": "controls the display of attachments to signers" + }, + "hideWorkflowRecipients": { + "type": "boolean", + "description": "controls the display of other signers to the signer" + } + } + }, + "signatureProfile": { + "type": "object", + "properties": { + "created": { + "type": "number", + "description": "Creation date" + }, + "documentType": { + "type": "string", + "description": "Type of the documents" + }, + "forceScrollDocument": { + "type": "boolean", + "description": "Force the signer to scroll to the bottom of the document" + }, + "id": { + "type": "string", + "description": "the signature profile Id" + }, + "isDefault": { + "type": "boolean", + "description": "Makes this signature profile the default one" + }, + "isDisabled": { + "type": "boolean", + "description": "Disable this signature profile" + }, + "name": { + "type": "string", + "description": "The signature profile name" + }, + "pdfSignatureImageText": { + "type": "string", + "description": "Text displayed in signatures pads" + }, + "pdfSignatureImageTextColor": { + "type": "string", + "description": "Color of the text displayed in the singatures pads" + }, + "pdfSignatureImageTextSize": { + "type": "number", + "description": "Size of the text displayed in the singatures pads" + }, + "pdfVisibleSignatureMode": { + "type": "string", + "description": "Visible signature mode (allowed, disabled, noImage)" + }, + "signatureType": { + "type": "string", + "description": "pades, xades, xadesDetached, xadesDetachedManifest, cades, helios", + "x-ms-summary": "Signature type" + }, + "tenantId": { + "type": "string", + "description": "Tenant Id" + }, + "updated": { + "type": "number", + "description": "Last modification date" + } + } + }, + "signatureProfiles": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/signatureProfile" + } + }, + "itemsPerPage": { + "type": "number", + "description": "Number of items per page" + }, + "pageIndex": { + "type": "number", + "description": "Index of the returned page" + }, + "totalItems": { + "type": "number", + "description": "Total number of items concerned by the request" + } + } + }, + "user": { + "type": "object", + "properties": { + "approveAllowed": { + "type": "boolean", + "description": "If set to true the user can approve documents" + }, + "country": { + "type": "string", + "description": "Country of the user" + }, + "created": { + "type": "integer", + "format": "int32", + "description": "Creation date" + }, + "email": { + "type": "string", + "description": "Email of th user" + }, + "firstName": { + "type": "string", + "description": "FirstName of the user" + }, + "groupId": { + "type": "string", + "description": "Id of the user's group" + }, + "id": { + "type": "string", + "description": "Id of the user" + }, + "isDisabled": { + "type": "boolean", + "description": "If true, the user is disabled" + }, + "lastLogin": { + "type": "integer", + "format": "int32", + "description": "The user's last login date" + }, + "lastName": { + "type": "string", + "description": "LastName of the user" + }, + "name": { + "type": "string", + "description": "Name (first name + last name) of the user" + }, + "organizationTitles": { + "type": "array", + "items": {}, + "description": "The user's funtions in his organizations" + }, + "phoneNumber": { + "type": "string", + "description": "Phone number of the user" + }, + "signAllowed": { + "type": "boolean", + "description": "If set to true, the user can sign documents" + }, + "subject": { + "type": "string", + "description": "The user's internal subkect code" + }, + "tenantId": { + "type": "string", + "description": "Id of the tenant" + }, + "updated": { + "type": "integer", + "format": "int32", + "description": "Last modification date" + }, + "viewAuthorizedGroups": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of group in which the user can act as an observer" + } + } + }, + "workflow": { + "type": "object", + "properties": { + "created": { + "type": "integer", + "format": "int32", + "description": "created" + }, + "currentRecipientEmails": { + "type": "array", + "items": {}, + "description": "currentRecipientEmails" + }, + "currentRecipientUsers": { + "type": "array", + "items": {}, + "description": "currentRecipientUsers" + }, + "data1": { + "type": "string", + "description": "Metadata 1" + }, + "data2": { + "type": "string", + "description": "Metadata 2" + }, + "data3": { + "type": "string", + "description": "Metadata 3" + }, + "data4": { + "type": "string", + "description": "Metadata 4" + }, + "data5": { + "type": "string", + "description": "Metadata 5" + }, + "data6": { + "type": "string", + "description": "Metadata 6" + }, + "data7": { + "type": "string", + "description": "Metadata 7" + }, + "data8": { + "type": "string", + "description": "Metadata 8" + }, + "description": { + "type": "string", + "description": "Description of the workflow" + }, + "email": { + "type": "string", + "description": "Email of the workflow owner" + }, + "firstName": { + "type": "string", + "description": "First Name of the workflow owner" + }, + "groupId": { + "type": "string", + "description": "Id of the workflow owner's group" + }, + "id": { + "type": "string", + "description": "Id of the workflow" + }, + "lastName": { + "type": "string", + "description": "Last name of the workflow owner" + }, + "layoutId": { + "type": "string", + "description": "Id of the metadata layout of the workflow" + }, + "logs": { + "type": "array", + "items": {}, + "description": "Logs items of the wokflow" + }, + "name": { + "type": "string", + "description": "Name (first name + last name) of the workflow owner" + }, + "notifiedEvents": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Lis of events notified by the workflow" + }, + "progress": { + "type": "integer", + "format": "int32", + "description": "Progress of the workflow in percents" + }, + "steps": { + "type": "array", + "items": { + "type": "object", + "properties": { + "allowComments": { + "type": "boolean", + "description": "Allows/forbid interactive comments ara allowed on the step" + }, + "hideAttachments": { + "type": "boolean", + "description": "Controls the display of attachments to signers" + }, + "hideWorkflowRecipients": { + "type": "boolean", + "description": "Controls the display of other signers to the signer" + }, + "id": { + "type": "string", + "description": "Step id" + }, + "invitePeriod": { + "type": "integer", + "format": "int32", + "description": "invitePeriod" + }, + "isFinished": { + "type": "boolean", + "description": "isFinished" + }, + "isStarted": { + "type": "boolean", + "description": "isStarted" + }, + "logs": { + "type": "array", + "items": {}, + "description": "logs" + }, + "maxInvites": { + "type": "integer", + "format": "int32", + "description": "maxInvites" + }, + "recipients": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consentPageId": { + "type": "string", + "description": "consentPageId" + }, + "country": { + "type": "string", + "description": "country" + }, + "email": { + "type": "string", + "description": "email" + }, + "firstName": { + "type": "string", + "description": "firstName" + }, + "lastName": { + "type": "string", + "description": "lastName" + }, + "phoneNumber": { + "type": "string", + "description": "phoneNumber" + }, + "userId": { + "type": "string", + "description": "userId" + } + } + }, + "description": "recipients" + }, + "requiredRecipients": { + "type": "integer", + "format": "int32", + "description": "requiredRecipients" + }, + "sendDownloadLink": { + "type": "boolean", + "description": "sendDownloadLink" + }, + "stepType": { + "type": "string", + "description": "stepType" + }, + "validityPeriod": { + "type": "integer", + "format": "int32", + "description": "validityPeriod" + } + } + }, + "description": "steps" + }, + "tenantId": { + "type": "string", + "description": "tenantId" + }, + "updated": { + "type": "integer", + "format": "int32", + "description": "updated" + }, + "userId": { + "type": "string", + "description": "userId" + }, + "viewAuthorizedGroups": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of groups in which users can act as observers" + }, + "viewAuthorizedUsers": { + "type": "array", + "items": { + "type": "string" + }, + "description": "viewAuthorizedUsers" + }, + "watchers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "email": { + "type": "string", + "description": "email" + }, + "notifiedEvents": { + "type": "array", + "items": { + "type": "string" + }, + "description": "notifiedEvents" + }, + "userId": { + "type": "string", + "description": "userId" + } + } + }, + "description": "watchers" + }, + "workflowStatus": { + "type": "string", + "description": "workflowStatus" + } + } + }, + "workflows": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/workflow" + }, + "description": "items" + }, + "itemsPerPage": { + "type": "integer", + "format": "int32", + "description": "itemsPerPage" + }, + "pageIndex": { + "type": "integer", + "format": "int32", + "description": "pageIndex" + }, + "totalItems": { + "type": "integer", + "format": "int32", + "description": "totalItems" + } + } + } + }, + "parameters": {}, + "responses": {}, + "securityDefinitions": { + "API Key": { + "type": "apiKey", + "in": "header", + "name": "Authorization" + } + }, + "security": [ + { + "API Key": [] + } + ], + "tags": [ + { + "name": "Consent Pages" + }, + { + "name": "Contacts" + }, + { + "name": "Metadata" + }, + { + "name": "Signature Profiles" + }, + { + "name": "Users" + }, + { + "name": "Workflows" + }, + { + "name": "Workflow Documents" + }, + { + "name": "Workflow Layouts" + } + ] +} \ No newline at end of file diff --git a/certified-connectors/Lex Power Sign/apiProperties.json b/certified-connectors/Lex Power Sign/apiProperties.json new file mode 100644 index 0000000000..ecd840156c --- /dev/null +++ b/certified-connectors/Lex Power Sign/apiProperties.json @@ -0,0 +1,25 @@ +{ + "properties": { + "connectionParameters": { + "api_key": { + "type": "securestring", + "uiDefinition": { + "displayName": "API Key", + "description": "The API Key for this api", + "tooltip": "The API key is a bearer token. Place it in the Authorization header (Bearer act_xxxx)", + "constraints": { + "tabIndex": 2, + "clearText": false, + "required": "true" + } + } + } + }, + "iconBrandColor": "#00AED9", + "capabilities": [ + "actions" + ], + "publisher": "Lex Persona", + "stackOwner": "Lex Persona" + } +} \ No newline at end of file diff --git a/certified-connectors/Lex Power Sign/readme.md b/certified-connectors/Lex Power Sign/readme.md new file mode 100644 index 0000000000..4765a71e98 --- /dev/null +++ b/certified-connectors/Lex Power Sign/readme.md @@ -0,0 +1,89 @@ +# Lex Power Sign connector + +Lex Persona is a European qualified trust services provider offering a range of electronic signature solutions. With Lex Enterprise, you have access to all the eIDAS signature levels, along with a large number of signer authentication methods. Your signature books are embedded in digital workflows. Automate connections between Lex Enterprise and all your tools to eliminate repetitive tasks, gain efficiency, and accelerate your business. + +# Publisher + +Lex Persona (www.lex-persona.com) + +# Prerequisites + +You will need to have the following in order to proceed: + +- Lex Enterprise subscription. Use the trial plan to test + +The environment requirements are: + +- A Microsoft Power Apps or Power Automate plan with custom connector feature +- The Power platform CLI tools + +# Supported operations + +|Operation |Description | +|----------------------|------------------------------------------------------------------------------------------------------------------------------------------| +|Retrieve consent page |[Retrieve a given consent page information](https://sgs-demo-test01.sunnystamp.com/wm-docs/api.html#retrieve-consent-page) | +|Search consent pages |[Search consent pages, by name for example](https://sgs-demo-test01.sunnystamp.com/wm-docs/api.html#search-consent-pages) | +|Create contact |[Create a contact](https://sgs-demo-test01.sunnystamp.com/wm-docs/api.html#create-contact) | +|Retrieve contact | [Retrieve a given contact information](https://sgs-demo-test01.sunnystamp.com/wm-docs/api.html#retrieve-contact) | +|Delete contact |[Delete a contact](https://sgs-demo-test01.sunnystamp.com/wm-docs/api.html#delete-contact) | +|Update contact |[Update a contact information](https://sgs-demo-test01.sunnystamp.com/wm-docs/api.html#update-contact) | +|Search contacts |[Search contacts, by last name for example](https://sgs-demo-test01.sunnystamp.com/wm-docs/api.html#search-contacts) | +|Retrieve the metadata mapping |[Retrieve the metadata mapping of your tenant](https://sgs-demo-test01.sunnystamp.com/wm-docs/api.html#retrieve-metadata-mapping) | +|Create signature profile |[Create a signature profile](https://sgs-demo-test01.sunnystamp.com/wm-docs/api.html#create-signature-profile) | +|Retrieve signature profile |[Retrieve a given signature profile information](https://sgs-demo-test01.sunnystamp.com/wm-docs/api.html#retrieve-signature-profile) | +|Update signature profile |[Update a signature profile information](https://sgs-demo-test01.sunnystamp.com/wm-docs/api.html#update-signature-profile) | +|Search signature profiles |[Search signature profiles, by name for example](https://sgs-demo-test01.sunnystamp.com/wm-docs/api.html#search-signature-profiles) | +|Retrieve me |[Retrieve the connected user information (the user id is needed to create a workflow)](https://sgs-demo-test01.sunnystamp.com/wm-docs/api.html#retrieve-me) | +|Create workflow |[Create a workflow](https://sgs-demo-test01.sunnystamp.com/wm-docs/api.html#create-workflow) | +|Retrieve workflow |[Retrieve a given workflow information](https://sgs-demo-test01.sunnystamp.com/wm-docs/api.html#retrieve-workflow) | +|Delete workflow |[Delete a workflow](https://sgs-demo-test01.sunnystamp.com/wm-docs/api.html#delete-workflow) | +|Update workflow|[Update a workflow information](https://sgs-demo-test01.sunnystamp.com/wm-docs/api.html#update-workflow) | +|Search workflows |[Search workflows, by name for example](https://sgs-demo-test01.sunnystamp.com/wm-docs/api.html#search-workflows) | +|Retrieve consent page url |[Retrieve the url of the consent page for a given signer](https://sgs-demo-test01.sunnystamp.com/wm-docs/api.html#create-workflow-invite) | +|Download evidence files |[Download the evidence files for a workflow](https://sgs-demo-test01.sunnystamp.com/wm-docs/api.html#download-evidence-files) | +|Create part |[Create a document part](https://sgs-demo-test01.sunnystamp.com/wm-docs/api.html#create-parts) | +|Create document | [Create a document from parts](https://sgs-demo-test01.sunnystamp.com/wm-docs/api.html#create-document) | +|Retrieve document |[Retrieve a document information](https://sgs-demo-test01.sunnystamp.com/wm-docs/api.html#retrieve-document) | +|Delete document |[Delete a document](https://sgs-demo-test01.sunnystamp.com/wm-docs/api.html#delete-document) | +|Update document |[Update a document information](https://sgs-demo-test01.sunnystamp.com/wm-docs/api.html#update-document) | +|Search documents |[Search documents, by file name for example](https://sgs-demo-test01.sunnystamp.com/wm-docs/api.html#search-documents) | +|Download a workflow documents |[Download the documents of a given workflow](https://sgs-demo-test01.sunnystamp.com/wm-docs/api.html#download-workflow-documents) +|Create metadata layout |[Create a metadata layout](https://sgs-demo-test01.sunnystamp.com/wm-docs/api.html#create-layout) | +|Retrieve metadata layout |[Rertieve a given metadata layout information](https://sgs-demo-test01.sunnystamp.com/wm-docs/api.html#retrieve-layout) | +|Update metadata layout |[Update a given metadata layout information](https://sgs-demo-test01.sunnystamp.com/wm-docs/api.html#update-layout) | +|Search metadata layouts |[Search metadata layouts, by name for example](https://sgs-demo-test01.sunnystamp.com/wm-docs/api.html#search-layouts) | + +# Obtaining credentials + +Please contact our sales representatives at commercial@lex-persona.com to get a Lex Enteprise subscription or an account on our trial systems. + +Connect to the Lex Enterprise portal with your account, and generate an API Key. + +# Known issues and limitation + +N/A + +# Deployment instructions + +By default, the connector is configured to use our trial backend (sgs-wm-test01.sunnystamp.com). If you want to pair the connector with your own Lex Enterprise tenant, edit the apiDefinition.swagger.json file and replace the test system url by your tenant url: + + - "host": "yourtenant.lexpersona.com", + +Then login to your PowerPlatform: + + paconn login + +And create the new custom connector: + + paconn create --api-prop apiProperties.json --api-def apiDefinition.swagger.json + + + + + + + + + + + From 023decc8eb2dd50e641ea8b210d444fe9a370b44 Mon Sep 17 00:00:00 2001 From: SukruthMN <121216764+SukruthMN@users.noreply.github.com> Date: Wed, 27 Sep 2023 10:39:13 +0530 Subject: [PATCH 10/17] Referralapi patch (#2968) * Update apiDefinition.swagger.json Added Additional requirements fields * referralapi-object updated type: object --- .../apiDefinition.swagger.json | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/certified-connectors/PartnerCenterReferrals/apiDefinition.swagger.json b/certified-connectors/PartnerCenterReferrals/apiDefinition.swagger.json index 4f97b9686a..57888af601 100644 --- a/certified-connectors/PartnerCenterReferrals/apiDefinition.swagger.json +++ b/certified-connectors/PartnerCenterReferrals/apiDefinition.swagger.json @@ -243,6 +243,30 @@ "items": {}, "title": "Offers", "type": "array" + }, + "additionalRequirements": { + "description": "Additional Requirements", + "items": { + "properties": { + "attributes": { + "description": "Attributes", + "title": "Attributes", + "properties": { + "id": { + "description": "Id", + "title": "Id", + "type": "string" + }, + "type": { + "description": "Type", + "title": "Type", + "type": "string" + } + }, + "type": "object" + } + } + } } }, "type": "object" From 018ce6cdcf07f7c4440ab0aa321e73987f0660fb Mon Sep 17 00:00:00 2001 From: Brayan Castro Date: Wed, 27 Sep 2023 06:57:16 -0500 Subject: [PATCH 11/17] Initial commit (#2962) * Initial commit * Readme, publisher and stackowner updated --- .../AutoPylot Connect/Readme.md | 35 ++ .../apiDefinition.swagger.json | 381 ++++++++++++++++++ .../AutoPylot Connect/apiProperties.json | 37 ++ 3 files changed, 453 insertions(+) create mode 100644 certified-connectors/AutoPylot Connect/Readme.md create mode 100644 certified-connectors/AutoPylot Connect/apiDefinition.swagger.json create mode 100644 certified-connectors/AutoPylot Connect/apiProperties.json diff --git a/certified-connectors/AutoPylot Connect/Readme.md b/certified-connectors/AutoPylot Connect/Readme.md new file mode 100644 index 0000000000..a5b3021162 --- /dev/null +++ b/certified-connectors/AutoPylot Connect/Readme.md @@ -0,0 +1,35 @@ +# AutoPylot Connect +AutoPylot Connect allows AutoPylot users to send and receive text messages using an AutoPylot phone number. + +## Publisher: AutoPylot Technologies Corp + +## Prerequisites +To use this connector, you will need: +* A Microsoft Power Apps or Power Automate plan with custom connector feature +* An AutoPylot account, credentials and AutoPylot phone number - Sign up at [https://www.autopylot.com/](https://www.autopylot.com/) + +## Supported Operations +The AutoPylot connector supports the following operations: +### Send Text Message +Sends a text message from your AutoPylot phone number to a recipient. +### Receive Text Message (Trigger) +Triggers when an inbound text is received on any of your AutoPylot phone numbers. + +## Obtaining Credentials +Go to [https://portal.autopylot.com/signup](https://portal.autopylot.com/signup) to Sign Up and setup your credentials. +AutoPylot Connect uses OAuth 2.0 authentication. Use your AutoPylot User authentication credentials to authenticate with this connector. + +## Getting Started +To get started with AutoPylot Connect, first obtain an account at [https://portal.autopylot.com/signup](https://portal.autopylot.com/signup), user credentials, and AutoPylot phone number through the AutoPylot portal. Once you have this information, you can begin sending and receiving texts. + +# Known Issues and Limitations +For issues with AutoPylot Connect please try this link first: [https://www.autopylot.com/contact-us/](https://www.autopylot.com/contact-us/). + +## Frequently Asked Questions +### How do I get AutoPylot Connect support +If you need support for AutoPylot Connect, please visit our support page at [https://www.autopylot.com/contact-us/](https://www.autopylot.com/contact-us/). +### Is there any documentation about AutoPylot +Our Resource Center contains useful information on how the product works and how to use it [https://www.autopylot.com/contact-us/](https://www.autopylot.com/contact-us/). + +## Deployment Instructions +After downloading the Connector and successfully authenticating with AutoPylot, the connector will be activated for the workflow. diff --git a/certified-connectors/AutoPylot Connect/apiDefinition.swagger.json b/certified-connectors/AutoPylot Connect/apiDefinition.swagger.json new file mode 100644 index 0000000000..d744950395 --- /dev/null +++ b/certified-connectors/AutoPylot Connect/apiDefinition.swagger.json @@ -0,0 +1,381 @@ +{ + "swagger": "2.0", + "info": { + "version": "1.0.0", + "title": "AutoPylot", + "description": "AutoPylot is a communications service. You can send and receive text messages associated with an AutoPylot phone number.", + "contact": { + "name": "AutoPylot Support", + "url": "https://autopylot.com", + "email": "support@autopylot.com" + } + }, + "host": "autopylot.com", + "basePath": "/", + "schemes": [ + "https" + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": { + "/api/short_messages": { + "post": { + "summary": "Sends a Text Message using your AutoPylot phone number", + "description": "Send a Text Message to a mobile phone number usnig your AutoPylot phone number", + "operationId": "Send-Text-Message", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "required": true, + "type": "string", + "default": "application/vnd.api+json", + "description": "Content-Type", + "x-ms-summary": "Content-Type" + }, + { + "name": "body", + "in": "body", + "schema": { + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "type", + "title": "Type", + "default": "short_messages", + "x-ms-visibility": "internal" + }, + "attributes": { + "type": "object", + "properties": { + "to": { + "type": "string", + "description": "To.", + "title": "To", + "x-ms-visibility": "important" + }, + "body": { + "type": "string", + "description": "Content.", + "title": "Body", + "x-ms-visibility": "important" + } + }, + "description": "attributes", + "required": [ + "to", + "body" + ] + } + }, + "description": "data", + "required": [ + "type", + "attributes" + ] + } + }, + "default": { + "data": { + "type": "short_messages", + "attributes": { + "to": "+1415", + "body": "Hi there" + } + } + }, + "required": [ + "data" + ] + }, + "required": true + } + ], + "responses": { + "201": { + "description": "201", + "schema": { + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "id" + }, + "type": { + "type": "string", + "description": "type" + }, + "links": { + "type": "object", + "properties": { + "self": { + "type": "string", + "description": "self" + } + }, + "description": "links" + }, + "attributes": { + "type": "object", + "properties": { + "from": { + "type": "string", + "description": "from" + }, + "to": { + "type": "string", + "description": "to" + }, + "body": { + "type": "string", + "description": "body" + }, + "short_message_type": { + "type": "string", + "description": "short_message_type" + }, + "created_at": { + "type": "string", + "description": "created_at" + } + }, + "description": "attributes" + } + }, + "description": "data" + } + } + } + } + }, + "x-ms-visibility": "important" + } + }, + "/webhooks": { + "x-ms-notification-content": { + "schema": { + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Id." + }, + "type": { + "type": "string", + "description": "type", + "title": "", + "x-ms-visibility": "internal" + }, + "links": { + "type": "object", + "properties": { + "self": { + "type": "string", + "description": "self", + "title": "", + "x-ms-visibility": "internal" + } + }, + "description": "links" + }, + "attributes": { + "type": "object", + "properties": { + "from": { + "type": "string", + "description": "From.", + "title": "From", + "x-ms-visibility": "important" + }, + "body": { + "type": "string", + "description": "Content.", + "title": "Body", + "x-ms-visibility": "important" + }, + "created_at": { + "type": "string", + "description": "Created at." + } + }, + "description": "attributes" + } + }, + "description": "data" + } + } + }, + "description": "Webhook Response" + }, + "post": { + "responses": { + "201": { + "description": "201", + "schema": { + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string" + }, + "links": { + "type": "object", + "properties": { + "self": { + "type": "string" + } + }, + "required": [ + "self" + ] + }, + "attributes": { + "type": "object", + "properties": { + "callback_url": { + "type": "string" + }, + "created_at": { + "type": "string" + } + }, + "required": [ + "callback_url", + "created_at" + ] + } + }, + "required": [ + "id", + "type", + "links", + "attributes" + ] + } + }, + "required": [ + "data" + ] + } + } + }, + "summary": "Inbound Text Message", + "description": "Received an Inbound Text Message through an AutoPylot phone number.", + "operationId": "Receive-Text-Message", + "x-ms-visibility": "important", + "x-ms-trigger": "single", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "required": true, + "type": "string", + "default": "application/vnd.api+json", + "x-ms-visibility": "internal", + "description": "Request Content-Type" + }, + { + "name": "body", + "in": "body", + "required": false, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "type", + "title": "Type", + "default": "webhooks" + }, + "attributes": { + "type": "object", + "properties": { + "callback_url": { + "type": "string", + "description": "Callback URL.", + "title": "Callback URL", + "x-ms-notification-url": true, + "x-ms-visibility": "internal" + } + }, + "description": "attributes", + "required": [ + "callback_url" + ] + } + }, + "description": "data", + "required": [ + "attributes", + "type" + ] + } + }, + "required": [ + "data" + ] + } + } + ] + } + } + }, + "x-ms-connector-metadata": [ + { + "propertyName": "Website", + "propertyValue": "https://autopylot.com" + }, + { + "propertyName": "Privacy policy", + "propertyValue": "https://www.autopylot.com/privacy/" + }, + { + "propertyName": "Categories", + "propertyValue": "Sales and CRM;Communication" + } + ], + "definitions": {}, + "parameters": {}, + "responses": {}, + "securityDefinitions": { + "oauth2-auth": { + "type": "oauth2", + "flow": "accessCode", + "authorizationUrl": "https://autopylot.com/oauth/authorize", + "tokenUrl": "https://autopylot.com/oauth/token", + "scopes": { + "public write": "public write" + } + } + }, + "security": [ + { + "oauth2-auth": [ + "public write" + ] + } + ], + "tags": [] +} \ No newline at end of file diff --git a/certified-connectors/AutoPylot Connect/apiProperties.json b/certified-connectors/AutoPylot Connect/apiProperties.json new file mode 100644 index 0000000000..0bacfc7c63 --- /dev/null +++ b/certified-connectors/AutoPylot Connect/apiProperties.json @@ -0,0 +1,37 @@ +{ + "properties": { + "connectionParameters": { + "token": { + "type": "oauthSetting", + "oAuthSettings": { + "identityProvider": "oauth2", + "clientId": "60mOMrhl23bdJmprB0pDzrLF7MXCqyzHMTitaOZeU7E", + "scopes": [ + "public write" + ], + "redirectMode": "Global", + "redirectUrl": "https://global.consent.azure-apim.net/redirect", + "properties": { + "IsFirstParty": "False", + "IsOnbehalfofLoginSupported": false + }, + "customParameters": { + "authorizationUrl": { + "value": "https://autopylot.com/oauth/authorize" + }, + "tokenUrl": { + "value": "https://autopylot.com/oauth/token" + }, + "refreshUrl": { + "value": "https://autopylot.com/oauth/token" + } + } + } + } + }, + "iconBrandColor": "#e95116", + "capabilities": [], + "publisher": "AutoPylot Technologies Corp", + "stackOwner": "AutoPylot Technologies Corp" + } +} \ No newline at end of file From ea81c22d2259544f2d36b54c9338077d239918bd Mon Sep 17 00:00:00 2001 From: HiveCPQIntegration <142023066+HiveCPQIntegration@users.noreply.github.com> Date: Wed, 27 Sep 2023 15:48:56 +0200 Subject: [PATCH 12/17] HiveCPQ Product Configurator (certified connector) (#2915) * Initial * Update readme document * add known issues and limitations * fix validation issues * provide actions as a capability * remove a property which does not seem supported * add some missing punctuation * Fix a mistake in the readme.md * Fix bad response schemas found during certified connector testing --- .../apiDefinition.swagger.json | 35 +++---------------- 1 file changed, 5 insertions(+), 30 deletions(-) diff --git a/certified-connectors/HiveCPQ - Product configurator/apiDefinition.swagger.json b/certified-connectors/HiveCPQ - Product configurator/apiDefinition.swagger.json index 6017684efa..b3a41a908d 100644 --- a/certified-connectors/HiveCPQ - Product configurator/apiDefinition.swagger.json +++ b/certified-connectors/HiveCPQ - Product configurator/apiDefinition.swagger.json @@ -5068,11 +5068,8 @@ } ], "responses": { - "200": { - "description": "OK", - "schema": { - "type": "string" - } + "204": { + "$ref": "#/responses/defaultNoContent" }, "400": { "$ref": "#/responses/defaultBadRequest" @@ -7333,6 +7330,7 @@ "description": "The events to which a webhook can subscribe.", "enum": [ "PROJECT_CREATED", + "PROJECT_COPIED", "PROJECT_DETAILS_UPDATED", "PROJECT_ADDRESSES_UPDATED", "PROJECT_SEGMENT_CREATED", @@ -10290,31 +10288,8 @@ "$ref": "#/definitions/responseAudit" }, "configurable": { - "type": "object", - "properties": { - "configurator": { - "$ref": "#/definitions/configuratorLink" - }, - "parameters": { - "type": "array", - "items": { - "type": "object", - "properties": { - "key": { - "type": "string", - "description": "The identifier of a configurator input value." - }, - "value": { - "type": "string", - "description": "The configurator input value." - } - }, - "description": "The input values for the configurator." - }, - "description": "Information about the component if it has been configured as a configurable product." - } - }, - "description": "configurable" + "type": "boolean", + "description": "Indicates if a configurator is linked." } } }, From d2ea383ee805664b0978c175c18bca865c3b9a8f Mon Sep 17 00:00:00 2001 From: Troy Taylor <44444967+troystaylor@users.noreply.github.com> Date: Thu, 28 Sep 2023 02:22:31 -0400 Subject: [PATCH 13/17] Reflect (Independent Publisher) (#2888) * Revert "Merge branch 'microsoft:dev' into dev" This reverts commit 096a7c31993f909c3ee2ccacb4d6a206a1a2b2a3, reversing changes made to cb0948670feda35e9fc2a43241de68bc50e06812. * Revert "Merge branch 'microsoft:dev' into dev" This reverts commit cb0948670feda35e9fc2a43241de68bc50e06812, reversing changes made to dc26e8a0268f26bc2f38bf3a66e8c90e98df9404. * Revert "Revert "Merge branch 'microsoft:dev' into dev"" This reverts commit 01764d0a6d9e3afa849a6a4159d751aee6108580. * Revert "Revert "Merge branch 'microsoft:dev' into dev"" This reverts commit a3f086ef0f4e8b47ec14e9287ec7ebc29a09ea33. * Add files via upload * Revert "Add files via upload" This reverts commit eeff7b7a02a5c65406413e7c848ebc718c30183e. * Add files via upload * Delete independent-publisher-connectors/FileIO directory * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Revert "Add files via upload" This reverts commit 1d855069580b1ee4670c7c8e3b2edec4e0d63cd5. * Add files via upload --- .../Reflect/apiDefinition.swagger.json | 482 ++++++++++++++++++ .../Reflect/apiProperties.json | 23 + .../Reflect/readme.md | 27 + 3 files changed, 532 insertions(+) create mode 100644 independent-publisher-connectors/Reflect/apiDefinition.swagger.json create mode 100644 independent-publisher-connectors/Reflect/apiProperties.json create mode 100644 independent-publisher-connectors/Reflect/readme.md diff --git a/independent-publisher-connectors/Reflect/apiDefinition.swagger.json b/independent-publisher-connectors/Reflect/apiDefinition.swagger.json new file mode 100644 index 0000000000..2c7f6165dc --- /dev/null +++ b/independent-publisher-connectors/Reflect/apiDefinition.swagger.json @@ -0,0 +1,482 @@ +{ + "swagger": "2.0", + "info": { + "title": "Reflect", + "description": "Reflect is a beautiful note-taking tool designed to help you think. Mirror the way your mind works by associating notes through backlinks. Reflect builds you a second brain that you can reference anytime.", + "version": "1.0", + "contact": { + "name": "Troy Taylor", + "url": "https://www.hitachisolutions.com", + "email": "ttaylor@hitachisolutions.com" + } + }, + "host": "reflect.app", + "basePath": "/api/", + "schemes": [ + "https" + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": { + "/graphs": { + "get": { + "responses": { + "200": { + "description": "default", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The identifier.", + "title": "ID" + }, + "name": { + "type": "string", + "description": "The name.", + "title": "Name" + }, + "acl": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The ACL.", + "title": "ACL" + } + } + } + } + } + }, + "summary": "Get graphs", + "description": "Retrieve all graphs.", + "operationId": "GraphsGet", + "parameters": [] + } + }, + "/graphs/{graphId}/books": { + "get": { + "responses": { + "200": { + "description": "default", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The identifier.", + "title": "ID" + }, + "asin": { + "type": "string", + "description": "The ASIN number.", + "title": "ASIN" + }, + "title": { + "type": "string", + "description": "The title.", + "title": "Title" + }, + "authors": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The authors.", + "title": "Authors" + }, + "notes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "The type.", + "title": "Type" + }, + "page": { + "type": "integer", + "format": "int32", + "description": "The page.", + "title": "Page" + }, + "location": { + "type": "integer", + "format": "int32", + "description": "The location.", + "title": "Location" + }, + "value": { + "type": "string", + "description": "The value.", + "title": "Value" + } + } + }, + "title": "Notes" + } + } + } + } + } + }, + "summary": "Get books", + "description": "Retrieve all books for a graph.", + "operationId": "BooksGet", + "parameters": [ + { + "name": "graphId", + "in": "path", + "x-ms-summary": "Graph ID", + "x-ms-url-encoding": "single", + "description": "The graph identifier.", + "required": true, + "type": "string" + } + ] + } + }, + "/graphs/{graphId}/links": { + "get": { + "responses": { + "200": { + "description": "default", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The identifier.", + "title": "ID" + }, + "url": { + "type": "string", + "description": "The URL address.", + "title": "URL" + }, + "title": { + "type": "string", + "description": "The title.", + "title": "Title" + }, + "description": { + "type": "string", + "description": "The description.", + "title": "Description" + }, + "updated_at": { + "type": "string", + "description": "When updated at.", + "title": "Updated At" + }, + "highlights": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The highlights.", + "title": "Highlights" + } + } + } + } + } + }, + "summary": "Get links", + "description": "Retrieve a list of links for a graph.", + "operationId": "LinksGet", + "parameters": [ + { + "name": "graphId", + "in": "path", + "x-ms-summary": "Graph ID", + "x-ms-url-encoding": "single", + "description": "The graph identifier.", + "required": true, + "type": "string" + } + ] + }, + "post": { + "responses": { + "200": { + "description": "default", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The identifier.", + "title": "ID" + }, + "url": { + "type": "string", + "description": "The URL address.", + "title": "URL" + }, + "title": { + "type": "string", + "description": "The title.", + "title": "Title" + }, + "description": { + "type": "string", + "description": "The description.", + "title": "Description" + }, + "updated_at": { + "type": "string", + "description": "When updated at.", + "title": "Updated At" + }, + "highlights": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The highlights.", + "title": "Highlights" + } + } + } + } + } + }, + "summary": "Create a link", + "description": "Creates a new link in a graph.", + "operationId": "LinkPost", + "parameters": [ + { + "name": "graphId", + "in": "path", + "x-ms-summary": "Graph ID", + "x-ms-url-encoding": "single", + "description": "The graph identifier.", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": false, + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The identifier.", + "title": "ID" + }, + "url": { + "type": "string", + "description": "The URL address.", + "title": "URL" + }, + "title": { + "type": "string", + "description": "The title.", + "title": "Title" + }, + "description": { + "type": "string", + "description": "The description.", + "title": "Description" + }, + "updated_at": { + "type": "string", + "description": "When updated at.", + "title": "Updated At" + }, + "highlights": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The highlights.", + "title": "Highlights" + } + }, + "required": [ + "url" + ] + } + } + ] + } + }, + "/graphs/{graphId}/daily-notes": { + "put": { + "responses": { + "200": { + "description": "default", + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "Whether a success.", + "title": "Success" + } + } + } + } + }, + "summary": "Append daily note", + "description": "Appends to your daily note.", + "operationId": "DailyNotePut", + "parameters": [ + { + "name": "graphId", + "in": "path", + "x-ms-summary": "Graph ID", + "x-ms-url-encoding": "single", + "description": "The graph identifier.", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": false, + "schema": { + "type": "object", + "properties": { + "date": { + "type": "string", + "description": "The date.", + "title": "Date" + }, + "text": { + "type": "string", + "description": "The text.", + "title": "Text" + }, + "transform_type": { + "type": "string", + "description": "The transform type.", + "title": "Transform Type", + "default": "list-append", + "x-ms-visibility": "internal" + }, + "list_name": { + "type": "string", + "description": "The list name.", + "title": "List Name" + } + }, + "required": [ + "transform_type" + ] + } + } + ] + } + }, + "/graphs/{graphId}/notes": { + "post": { + "responses": { + "200": { + "description": "default", + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "Whether a success.", + "title": "Success" + } + } + } + } + }, + "summary": "Create note", + "description": "Creates a new note.", + "operationId": "NotePost", + "parameters": [ + { + "name": "graphId", + "in": "path", + "x-ms-summary": "Graph ID", + "x-ms-url-encoding": "single", + "description": "The graph identifier.", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": false, + "schema": { + "type": "object", + "properties": { + "subject": { + "type": "string", + "description": "The subject.", + "title": "Subject" + }, + "content_markdown": { + "type": "string", + "description": "The content markdown.", + "title": "Content Markdown" + }, + "pinned": { + "type": "boolean", + "description": "Whether pinned.", + "title": "Pinned" + } + }, + "required": [ + "content_markdown", + "subject" + ] + } + } + ] + } + } + }, + "definitions": {}, + "parameters": {}, + "responses": {}, + "securityDefinitions": { + "API Key": { + "type": "apiKey", + "in": "header", + "name": "Authorization" + } + }, + "security": [ + { + "API Key": [] + } + ], + "tags": [], + "x-ms-connector-metadata": [ + { + "propertyName": "Website", + "propertyValue": "https://reflect.app/" + }, + { + "propertyName": "Privacy policy", + "propertyValue": "https://reflect.app/privacy" + }, + { + "propertyName": "Categories", + "propertyValue": "Productivity" + } + ] +} \ No newline at end of file diff --git a/independent-publisher-connectors/Reflect/apiProperties.json b/independent-publisher-connectors/Reflect/apiProperties.json new file mode 100644 index 0000000000..15fae5fe3c --- /dev/null +++ b/independent-publisher-connectors/Reflect/apiProperties.json @@ -0,0 +1,23 @@ +{ + "properties": { + "connectionParameters": { + "api_key": { + "type": "securestring", + "uiDefinition": { + "displayName": "Access Token (in the form 'Bearer YOUR_ACCESS_TOKEN')", + "description": "The Access Token (in the form 'Bearer YOUR_ACCESS_TOKEN') for this api", + "tooltip": "Provide your Access Token (in the form 'Bearer YOUR_ACCESS_TOKEN')", + "constraints": { + "tabIndex": 2, + "clearText": false, + "required": "true" + } + } + } + }, + "iconBrandColor": "#da3b01", + "capabilities": [], + "publisher": "Troy Taylor", + "stackOwner": "Reflect" + } +} \ No newline at end of file diff --git a/independent-publisher-connectors/Reflect/readme.md b/independent-publisher-connectors/Reflect/readme.md new file mode 100644 index 0000000000..3a81a36c7a --- /dev/null +++ b/independent-publisher-connectors/Reflect/readme.md @@ -0,0 +1,27 @@ +# Reflect +Reflect is a beautiful note-taking tool designed to help you think. Mirror the way your mind works by associating notes through backlinks. Reflect builds you a second brain that you can reference anytime. + +## Publisher: Troy Taylor, Hitachi Solutions + +## Prerequisites +You will need an account with [Reflect](https://reflect.app/). + +## Obtaining Credentials +You can generate a token on the [OAuth page](https://reflect.app/developer/oauth). + +## Supported Operations +### Get graphs +Retrieve all graphs. +### Get books +Retrieve all books for a graph. +### Get links +Retrieve a list of links for a graph. +### Create a link +Creates a new link in a graph. +### Append daily note +Appends to your daily note. +### Create note +Creates a new note. + +## Known Issues and Limitations +There are no known issues at this time. From 7e26b2896b5495dccabaa6ade7f567e445f2ef4f Mon Sep 17 00:00:00 2001 From: Andreas Cieslik Date: Thu, 28 Sep 2023 08:25:11 +0200 Subject: [PATCH 14/17] Mime Automation (Independent Publisher) (#2823) * Initial commit MimeAutomation * Fixed folder name and title --------- Co-authored-by: aw18379 --- .../apiDefinition.swagger.json | 114 ++++++++++++++++++ .../Mime Automation/apiProperties.json | 23 ++++ .../Mime Automation/readme.md | 63 ++++++++++ 3 files changed, 200 insertions(+) create mode 100644 independent-publisher-connectors/Mime Automation/apiDefinition.swagger.json create mode 100644 independent-publisher-connectors/Mime Automation/apiProperties.json create mode 100644 independent-publisher-connectors/Mime Automation/readme.md diff --git a/independent-publisher-connectors/Mime Automation/apiDefinition.swagger.json b/independent-publisher-connectors/Mime Automation/apiDefinition.swagger.json new file mode 100644 index 0000000000..0a3faa6552 --- /dev/null +++ b/independent-publisher-connectors/Mime Automation/apiDefinition.swagger.json @@ -0,0 +1,114 @@ +{ + "swagger": "2.0", + "info": { + "title": "Mime Automation", + "version": "1.0", + "description": "Mime Automation provides a way to extract data from a TNEF (winmail.dat) encoded file", + "contact": { + "name": "Andreas Cieslik", + "email": "acieslik@accloudsolutions.com" + } + }, + "host": "accloudsolutions.c1-eu-nmbg-hz.projectx.biz", + "basePath": "/", + "schemes": [ + "https" + ], + "consumes": [], + "produces": [], + "paths": { + "/MimeAutomation/ExtractFiles": { + "post": { + "tags": [ + "MimeAutomation" + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/TnefFile" + } + } + ], + "responses": { + "200": { + "description": "Success", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Attachment" + } + } + } + }, + "operationId": "ExtractFiles", + "description": "Extracts attachments in Base64 format from a Base64-encoded TNEF file string", + "summary": "Extract files from a TNEF-encoded file" + } + } + }, + "definitions": { + "Attachment": { + "type": "object", + "properties": { + "fileName": { + "type": "string", + "description": "File name with extension", + "title": "File Name" + }, + "content": { + "type": "string", + "description": "Base-64 encoded string of the attachement file", + "title": "Content" + } + }, + "additionalProperties": false + }, + "TnefFile": { + "required": [ + "content" + ], + "type": "object", + "properties": { + "content": { + "type": "string", + "description": "Base-64-encoded string of a TNEF file (e.g. winmail.dat)", + "title": "Content" + } + }, + "additionalProperties": false + } + }, + "parameters": {}, + "responses": {}, + "securityDefinitions": { + "api_key": { + "type": "apiKey", + "in": "header", + "name": "X-Billing-Token" + } + }, + "security": [], + "tags": [], + "x-ms-connector-metadata": [ + { + "propertyName": "Website", + "propertyValue": "https://www.accloudsolutions.com" + }, + { + "propertyName": "Privacy policy", + "propertyValue": "https://www.accloudsolutions.com/data-protection-privacy" + }, + { + "propertyName": "Categories", + "propertyValue": "Content and Files" + } + ] +} \ No newline at end of file diff --git a/independent-publisher-connectors/Mime Automation/apiProperties.json b/independent-publisher-connectors/Mime Automation/apiProperties.json new file mode 100644 index 0000000000..c7b6bb845d --- /dev/null +++ b/independent-publisher-connectors/Mime Automation/apiProperties.json @@ -0,0 +1,23 @@ +{ + "properties": { + "connectionParameters": { + "api_key": { + "type": "securestring", + "uiDefinition": { + "displayName": "API Key", + "description": "The API Key for this api", + "tooltip": "Provide your API Key", + "constraints": { + "tabIndex": 2, + "clearText": false, + "required": "true" + } + } + } + }, + "iconBrandColor": "#da3b01", + "capabilities": [], + "publisher": "Andreas Cieslik", + "stackOwner": "AC Cloud Solutions" + } +} \ No newline at end of file diff --git a/independent-publisher-connectors/Mime Automation/readme.md b/independent-publisher-connectors/Mime Automation/readme.md new file mode 100644 index 0000000000..61450f1aa4 --- /dev/null +++ b/independent-publisher-connectors/Mime Automation/readme.md @@ -0,0 +1,63 @@ +# Mime Automation +The Mime Automation connector helps you to extract attachments in a Base-64 formated string together with its file name, which is originating from a Base-64-encoded TNEF file string. + +## Publisher: Publisher's Name +Andreas Cieslik, AC Cloud Solutions + +## Prerequisites +Required. Any plans or licenses, tools required from the connector.​ + +## Supported Operations +### Extract files from a TNEF-encoded file +For the "Content" parameter you need to provide a Base64-encoded TNEF file string. +The API service will then extract existing files in an JSON array with file name and content parameters. +The content will also be a base-64 encoded string of the actual file. + +## Obtaining Credentials +Please go this web site and subscribe to the required plan: +https://www.accloudsolutions.com/products/apis/tnef-attachment-extractor + +Once you have signed up and subscribed to a plan you will get an API key in your portal overview. + +When you use this connector you need to provide that API key for the connection to be configured. + +## Getting Started +Transport Neutral Encapsulation Format or TNEF is a proprietary email attachment format used by Microsoft Outlook and Microsoft Exchange Server. An attached file with TNEF encoding is most often named winmail.dat or win.dat, and has a MIME type of Application/MS-TNEF. The official (IANA) media type, however, is application/vnd.ms-tnef. + +This API endpoint expects in the request body a JSON with a "content" property + +{ + content: "BASE-64 encoded string of a TNEF file" +} + +For quick testing you can convert your winmail.dat (TNEF encoded file) into a base-64 encoded string with online converter: + +https://base64.guru/converter/encode/file + +Otherwise you need to implement this conversion logic in your client prior to calling this API endpoint. + +As a result this endpoint will return base-64 encoded files and its original file names. + +The result schema will be like this: + +{ + fileName:"mypicture.jpg" + content:"/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAPAAA/+4AJkFkb2JlAGTAAAAAAQMAFQQDBgoNAAADiAAABUwAAAfnAAALd//bAI...", + + fileName:"readme.txt" + content:"/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAPAAA/+4AJkFkb2JlAGTAAAAAAQMAFQQDBgoNAAADiAAABUwAAAfnAAALd//bAI..." +} + +To quickly check and convert the result base-64 strings back you could also use this online converter tool: +https://base64.guru/converter/decode/file + +Use case: + +Some email clients or third party applications that receive emails cannot interpret the TNEF-encoded file that comes from users that are using Microsoft Outlook as their main email client to send their emails with having the TNEF feature activated. With a custom implementation /business process flow that is using our API it would be still possible to parse out and extract the attachted documents in order to store these files on your client or in your third party application. + +More information on how Microsoft Outlook can be configured in this regard here: +https://support.microsoft.com/en-us/topic/how-email-message-formats-affect-internet-email-messages-in-outlook-3b2c0536-c1c0-1d68-19f0-8cae13c26722 + +## Known Issues and Limitations +There are no known issues at this time. + From 60f4083b0e817021d7912d12e1b484027b4655a9 Mon Sep 17 00:00:00 2001 From: Troy Taylor <44444967+troystaylor@users.noreply.github.com> Date: Thu, 28 Sep 2023 02:29:01 -0400 Subject: [PATCH 15/17] Mailinator (Independent Publisher) (#2804) * Revert "Merge branch 'microsoft:dev' into dev" This reverts commit 096a7c31993f909c3ee2ccacb4d6a206a1a2b2a3, reversing changes made to cb0948670feda35e9fc2a43241de68bc50e06812. * Revert "Merge branch 'microsoft:dev' into dev" This reverts commit cb0948670feda35e9fc2a43241de68bc50e06812, reversing changes made to dc26e8a0268f26bc2f38bf3a66e8c90e98df9404. * Revert "Revert "Merge branch 'microsoft:dev' into dev"" This reverts commit 01764d0a6d9e3afa849a6a4159d751aee6108580. * Revert "Revert "Merge branch 'microsoft:dev' into dev"" This reverts commit a3f086ef0f4e8b47ec14e9287ec7ebc29a09ea33. * Add files via upload * Revert "Add files via upload" This reverts commit eeff7b7a02a5c65406413e7c848ebc718c30183e. * Add files via upload * Delete independent-publisher-connectors/FileIO directory * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Revert "Add files via upload" This reverts commit 1d855069580b1ee4670c7c8e3b2edec4e0d63cd5. * Add files via upload * Update apiDefinition.swagger.json --- .../Mailinator/apiDefinition.swagger.json | 854 ++++++++++++++++++ .../Mailinator/apiProperties.json | 23 + .../Mailinator/readme.md | 33 + 3 files changed, 910 insertions(+) create mode 100644 independent-publisher-connectors/Mailinator/apiDefinition.swagger.json create mode 100644 independent-publisher-connectors/Mailinator/apiProperties.json create mode 100644 independent-publisher-connectors/Mailinator/readme.md diff --git a/independent-publisher-connectors/Mailinator/apiDefinition.swagger.json b/independent-publisher-connectors/Mailinator/apiDefinition.swagger.json new file mode 100644 index 0000000000..d1daf1638b --- /dev/null +++ b/independent-publisher-connectors/Mailinator/apiDefinition.swagger.json @@ -0,0 +1,854 @@ +{ + "swagger": "2.0", + "info": { + "title": "Mailinator", + "description": "The Mailinator service provides programmatic access to the Mailinator system. This includes fetching and injecting messages into the Mailinator system and creating routing rules for specific message domains within the system.", + "version": "1.0.0", + "contact": { + "name": "Troy Taylor", + "url": "https://www.hitachisolutions.com", + "email": "ttaylor@hitachisolutions.com" + } + }, + "host": "mailinator.com", + "basePath": "/api/v2/", + "schemes": [ + "https" + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": { + "/domains/{domain}/inboxes/{inbox}": { + "get": { + "responses": { + "200": { + "description": "default", + "schema": { + "type": "object", + "properties": { + "domain": { + "type": "string", + "description": "The domain.", + "title": "Domain" + }, + "to": { + "type": "string", + "description": "The To address.", + "title": "To" + }, + "msgs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "subject": { + "type": "string", + "description": "The subject.", + "title": "Subject" + }, + "domain": { + "type": "string", + "description": "The domain.", + "title": "Domain" + }, + "from": { + "type": "string", + "description": "The From address.", + "title": "From" + }, + "id": { + "type": "string", + "description": "The identifier.", + "title": "ID" + }, + "to": { + "type": "string", + "description": "The To address.", + "title": "To" + }, + "time": { + "type": "integer", + "format": "int32", + "description": "The time.", + "title": "Time" + }, + "seconds_ago": { + "type": "integer", + "format": "int32", + "description": "The seconds ago.", + "title": "Seconds Ago" + } + } + }, + "title": "Messages" + } + } + } + } + }, + "summary": "Fetch inbox", + "description": "This endpoint retrieves a list of messages summaries. You can retrieve a list by inbox, inboxes, or entire domain.", + "operationId": "InboxGet", + "parameters": [ + { + "name": "domain", + "in": "path", + "x-ms-summary": "Domain", + "x-ms-url-encoding": "single", + "description": "The domain.", + "required": true, + "type": "string" + }, + { + "name": "inbox", + "in": "path", + "x-ms-summary": "Inbox", + "x-ms-url-encoding": "single", + "description": "The inbox.", + "required": true, + "type": "string" + }, + { + "name": "limit", + "in": "query", + "x-ms-summary": "Limit", + "description": "The limit.", + "required": false, + "type": "integer" + }, + { + "name": "sort", + "in": "query", + "x-ms-summary": "Sort", + "description": "The sort.", + "required": false, + "type": "string" + }, + { + "name": "skip", + "in": "query", + "x-ms-summary": "Skip", + "description": "The number to skip.", + "required": false, + "type": "integer" + }, + { + "name": "decode_subject", + "in": "query", + "x-ms-summary": "Decode Subject", + "description": "Whether to decode subject.", + "required": false, + "type": "boolean" + } + ], + "x-ms-visibility": "important" + } + }, + "/domains/{domain}/inboxes/{inbox}/messages/{message_id}": { + "get": { + "responses": { + "200": { + "description": "default", + "schema": { + "type": "object", + "properties": { + "fromfull": { + "type": "string", + "description": "The full From address.", + "title": "From" + }, + "headers": { + "type": "object", + "properties": { + "mime-version": { + "type": "string", + "description": "The MIME version.", + "title": "MIME Version" + }, + "date": { + "type": "string", + "description": "The date.", + "title": "Date" + }, + "subject": { + "type": "string", + "description": "The subject.", + "title": "Subject" + }, + "content-type": { + "type": "string", + "description": "The content type.", + "title": "Content Type" + } + }, + "title": "Headers" + }, + "subject": { + "type": "string", + "description": "The subject.", + "title": "Subject" + }, + "parts": { + "type": "array", + "items": { + "type": "object", + "properties": { + "headers": { + "type": "object", + "properties": { + "content-type": { + "type": "string", + "description": "The content type.", + "title": "Content Type" + }, + "content-disposition": { + "type": "string", + "description": "The content disposition.", + "title": "Content Disposition" + }, + "content-transfer-encoding": { + "type": "string", + "description": "The content transfer encoding.", + "title": "Content Transfer Encoding" + } + }, + "title": "Headers" + }, + "body": { + "type": "string", + "description": "The body.", + "title": "Body" + } + } + }, + "title": "Parts" + }, + "from": { + "type": "string", + "description": "The From address.", + "title": "From" + }, + "to": { + "type": "string", + "description": "The To address.", + "title": "To" + }, + "id": { + "type": "string", + "description": "The identifier.", + "title": "ID" + }, + "time": { + "type": "integer", + "format": "int32", + "description": "The time.", + "title": "Time" + }, + "seconds_ago": { + "type": "integer", + "format": "int32", + "description": "The seconds ago.", + "title": "Seconds Ago" + } + } + } + } + }, + "summary": "Get message", + "description": "This endpoint retrieves a specific message by identifier.", + "operationId": "MessageGet", + "parameters": [ + { + "name": "domain", + "in": "path", + "x-ms-summary": "Domain", + "x-ms-url-encoding": "single", + "description": "The domain.", + "required": true, + "type": "string" + }, + { + "name": "inbox", + "in": "path", + "x-ms-summary": "Inbox", + "x-ms-url-encoding": "single", + "description": "The inbox.", + "required": true, + "type": "string" + }, + { + "name": "message_id", + "in": "path", + "x-ms-summary": "Message ID", + "x-ms-url-encoding": "single", + "description": "The message identifier.", + "required": true, + "type": "string" + } + ] + }, + "delete": { + "responses": { + "200": { + "description": "default", + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "The status.", + "title": "Status" + }, + "messages_deleted": { + "type": "integer", + "format": "int32", + "description": "Whether the message was deleted.", + "title": "Message Deleted" + } + } + } + } + }, + "summary": "Delete message", + "x-ms-visibility": "advanced", + "parameters": [ + { + "name": "domain", + "in": "path", + "x-ms-summary": "Domain", + "x-ms-url-encoding": "single", + "description": "The domain.", + "required": true, + "type": "string" + }, + { + "name": "inbox", + "in": "path", + "x-ms-summary": "Inbox", + "x-ms-url-encoding": "single", + "description": "The inbox.", + "required": true, + "type": "string" + }, + { + "name": "message_id", + "in": "path", + "x-ms-summary": "Message ID", + "x-ms-url-encoding": "single", + "description": "The message identifier.", + "required": true, + "type": "string" + } + ], + "description": "This endpoint deletes a specific message.", + "operationId": "MessageDelete" + } + }, + "/domains/{domain}/inboxes/{inbox}/messages/{message_id}/attachments": { + "get": { + "responses": { + "200": { + "description": "default", + "schema": { + "type": "object", + "properties": { + "attachments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "filename": { + "type": "string", + "description": "The filename.", + "title": "Filename" + }, + "content-disposition": { + "type": "string", + "description": "The content disposition.", + "title": "Content Disposition" + }, + "content-transfer-encoding": { + "type": "string", + "description": "The content transfer encoding.", + "title": "Content Transfer Encoding" + }, + "content-type": { + "type": "string", + "description": "The content type.", + "title": "Content Type" + }, + "attachment-id": { + "type": "integer", + "format": "int32", + "description": "The attachment identifier.", + "title": "Attachment ID" + } + } + }, + "title": "Attachments" + } + } + } + } + }, + "summary": "Get message attachments", + "description": "This endpoint retrieves a list of attachments for a message. Note attachments are expected to be in Email format.", + "operationId": "MessageAttachmentsGet", + "parameters": [ + { + "name": "domain", + "in": "path", + "x-ms-summary": "Domain", + "x-ms-url-encoding": "single", + "description": "The domain.", + "required": true, + "type": "string" + }, + { + "name": "inbox", + "in": "path", + "x-ms-summary": "Inbox", + "x-ms-url-encoding": "single", + "description": "The inbox.", + "required": true, + "type": "string" + }, + { + "name": "message_id", + "in": "path", + "x-ms-summary": "Message ID", + "x-ms-url-encoding": "single", + "description": "The message identifier.", + "required": true, + "type": "string" + } + ] + } + }, + "/domains/{domain}/inboxes/{inbox}/messages/{message_id}/links": { + "get": { + "responses": { + "200": { + "description": "default", + "schema": { + "type": "object", + "properties": { + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The links.", + "title": "Links" + } + } + } + } + }, + "summary": "Get message links", + "description": "This endpoint retrieves all links found within a given email.", + "operationId": "MessageLinksGet", + "parameters": [ + { + "name": "domain", + "in": "path", + "x-ms-summary": "Domain", + "x-ms-url-encoding": "single", + "description": "The domain.", + "required": true, + "type": "string" + }, + { + "name": "inbox", + "in": "path", + "x-ms-summary": "Inbox", + "x-ms-url-encoding": "single", + "description": "The inbox.", + "required": true, + "type": "string" + }, + { + "name": "message_id", + "in": "path", + "x-ms-summary": "Message ID", + "x-ms-url-encoding": "single", + "description": "The message identifier.", + "required": true, + "type": "string" + } + ] + } + }, + "/domains/{domain}/inboxes/{inbox}/messages": { + "post": { + "responses": { + "201": { + "description": "default", + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "The status.", + "title": "Status" + }, + "id": { + "type": "string", + "description": "The identifier.", + "title": "ID" + } + } + } + } + }, + "summary": "Inject message", + "description": "This endpoint allows you to deliver a JSON message into your private domain. This is similar to simply emailing a message to your private domain, except that you use HTTP Post and can programmatically inject the message.", + "operationId": "MessagePost", + "parameters": [ + { + "name": "domain", + "in": "path", + "x-ms-summary": "Domain", + "x-ms-url-encoding": "single", + "description": "The domain.", + "required": true, + "type": "string" + }, + { + "name": "inbox", + "in": "path", + "x-ms-summary": "Inbox", + "x-ms-url-encoding": "single", + "description": "The inbox.", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": false, + "schema": { + "type": "object", + "properties": { + "fromfull": { + "type": "string", + "description": "The full From address.", + "title": "From" + }, + "headers": { + "type": "object", + "properties": { + "mime-version": { + "type": "string", + "description": "The MIME version.", + "title": "MIME Version" + }, + "date": { + "type": "string", + "description": "The date.", + "title": "Date" + }, + "subject": { + "type": "string", + "description": "The subject.", + "title": "Subject" + }, + "content-type": { + "type": "string", + "description": "The content type.", + "title": "Content Type" + } + }, + "title": "Headers" + }, + "subject": { + "type": "string", + "description": "The subject.", + "title": "Subject" + }, + "parts": { + "type": "array", + "items": { + "type": "object", + "properties": { + "headers": { + "type": "object", + "properties": { + "content-type": { + "type": "string", + "description": "The content type.", + "title": "Content Type" + }, + "content-disposition": { + "type": "string", + "description": "The content disposition.", + "title": "Content Disposition" + }, + "content-transfer-encoding": { + "type": "string", + "description": "The content transfer encoding.", + "title": "Content Transfer Encoding" + } + }, + "title": "Headers" + }, + "body": { + "type": "string", + "description": "The body.", + "title": "Body" + } + } + }, + "title": "Parts" + }, + "from": { + "type": "string", + "description": "The From address.", + "title": "From" + }, + "to": { + "type": "string", + "description": "The To address.", + "title": "To" + }, + "id": { + "type": "string", + "description": "The identifier.", + "title": "ID" + }, + "time": { + "type": "integer", + "format": "int32", + "description": "The time.", + "title": "Time" + }, + "seconds_ago": { + "type": "integer", + "format": "int32", + "description": "The seconds ago.", + "title": "Seconds Ago" + } + } + } + } + ], + "x-ms-visibility": "important" + } + }, + "/team/stats": { + "get": { + "responses": { + "200": { + "description": "default", + "schema": { + "type": "object", + "properties": { + "stats": { + "type": "array", + "items": { + "type": "object", + "properties": { + "date": { + "type": "string", + "description": "The date.", + "title": "Date" + }, + "retrieved": { + "type": "object", + "properties": { + "web_private": { + "type": "integer", + "format": "int32", + "description": "The number of web private.", + "title": "Web Private" + }, + "web_public": { + "type": "integer", + "format": "int32", + "description": "The number of web public.", + "title": "Web Public" + }, + "api_email": { + "type": "integer", + "format": "int32", + "description": "The number of API emails.", + "title": "API Email" + }, + "api_error": { + "type": "integer", + "format": "int32", + "description": "The number of API errors.", + "title": "API Error" + } + }, + "title": "Retrieved" + }, + "sent": { + "type": "object", + "properties": { + "sms": { + "type": "integer", + "format": "int32", + "description": "The number of SMS.", + "title": "SMS" + }, + "email": { + "type": "integer", + "format": "int32", + "description": "The number of emails.", + "title": "Email" + } + }, + "title": "Sent" + } + } + }, + "title": "Stats" + } + } + } + } + }, + "summary": "Get stats", + "parameters": [], + "description": "This endpoint retrieves usage information for your Team.", + "operationId": "StatsGet" + } + }, + "/domains/": { + "get": { + "responses": { + "200": { + "description": "default", + "schema": { + "type": "object", + "properties": { + "domains": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The name.", + "title": "Name" + }, + "description": { + "type": "string", + "description": "The description.", + "title": "Description" + }, + "_id": { + "type": "string", + "description": "The identifier.", + "title": "ID" + }, + "enabled": { + "type": "boolean", + "description": "Whether enabled.", + "title": "Enabled" + } + } + }, + "title": "Domains" + } + } + } + } + }, + "summary": "Get all domains", + "x-ms-visibility": "advanced", + "description": "Retrieve a list of your domains.", + "operationId": "DomainsGet", + "parameters": [] + } + }, + "/domains/{domain_id}": { + "get": { + "responses": { + "200": { + "description": "default", + "schema": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "description": "The identifier.", + "title": "ID" + }, + "description": { + "type": "string", + "description": "The description.", + "title": "Description" + }, + "enabled": { + "type": "boolean", + "description": "Whether enabled.", + "title": "Enabled" + }, + "name": { + "type": "string", + "description": "The name.", + "title": "Name" + }, + "ownerid": { + "type": "string", + "description": "The owner identifier.", + "title": "Owner ID" + } + } + } + } + }, + "summary": "Get domain", + "description": "Retrieve a specific domain.", + "operationId": "DomainGet", + "parameters": [ + { + "name": "domain_id", + "in": "path", + "x-ms-summary": "Domain ID", + "x-ms-url-encoding": "single", + "description": "The domain identifier.", + "required": true, + "type": "string" + } + ] + } + } + }, + "definitions": {}, + "parameters": {}, + "responses": {}, + "securityDefinitions": { + "API Key": { + "type": "apiKey", + "in": "header", + "name": "Authorization" + } + }, + "security": [ + { + "API Key": [] + } + ], + "tags": [], + "x-ms-connector-metadata": [ + { + "propertyName": "Website", + "propertyValue": "https://www.mailinator.com/" + }, + { + "propertyName": "Privacy policy", + "propertyValue": "https://www.mailinator.com/site/privacy-policy/" + }, + { + "propertyName": "Categories", + "propertyValue": "Communication" + } + ] +} diff --git a/independent-publisher-connectors/Mailinator/apiProperties.json b/independent-publisher-connectors/Mailinator/apiProperties.json new file mode 100644 index 0000000000..331ccb01f8 --- /dev/null +++ b/independent-publisher-connectors/Mailinator/apiProperties.json @@ -0,0 +1,23 @@ +{ + "properties": { + "connectionParameters": { + "api_key": { + "type": "securestring", + "uiDefinition": { + "displayName": "API Token", + "description": "The API Token for this api", + "tooltip": "Provide your API Token", + "constraints": { + "tabIndex": 2, + "clearText": false, + "required": "true" + } + } + } + }, + "iconBrandColor": "#da3b01", + "capabilities": [], + "publisher": "Troy Taylor", + "stackOwner": "Manybrain, LLC." + } +} \ No newline at end of file diff --git a/independent-publisher-connectors/Mailinator/readme.md b/independent-publisher-connectors/Mailinator/readme.md new file mode 100644 index 0000000000..55d33330b5 --- /dev/null +++ b/independent-publisher-connectors/Mailinator/readme.md @@ -0,0 +1,33 @@ +# Mailinator +The Mailinator service provides programmatic access to the Mailinator system. This includes fetching and injecting messages into the Mailinator system and creating routing rules for specific message domains within the system. + +## Publisher: Troy Taylor, Hitachi Solutions + +## Prerequisites +You must sign up for an account with [Mailinator](https://www.mailinator.com/v4/public/inboxes.jsp?trialshow=true). + +## Obtaining Credentials +Once logged in to your Inbox, go to the Team Settings page to find your API Token. + +## Supported Operations +### Fetch inbox +This endpoint retrieves a list of messages summaries. You can retrieve a list by inbox, inboxes, or entire domain. +### Get message +This endpoint retrieves a specific message by identifier. +### Delete message +This endpoint deletes a specific message. +### Get message attachments +This endpoint retrieves a list of attachments for a message. Note attachments are expected to be in Email format. +### Get message links +This endpoint retrieves all links found within a given email. +### Inject message +This endpoint allows you to deliver a JSON message into your private domain. This is similar to simply emailing a message to your private domain, except that you use HTTP Post and can programmatically inject the message. +### Get stats +This endpoint retrieves usage information for your team. +### Get all domains +Retrieve a list of your domains. +### Get domain +Retrieve a specific domain. + +## Known Issues and Limitations +There are no known issues at this time. From aba87bf27be63962769915f4a4d9bfc18beca916 Mon Sep 17 00:00:00 2001 From: tec1-472 <143764078+tec1-472@users.noreply.github.com> Date: Fri, 29 Sep 2023 17:24:40 +0900 Subject: [PATCH 16/17] XC-Gate Connector Registration (#2970) * XC-Gate Connector Registration *add apiDefinition.swagger.json *add apiProperties.json *add Readme.md * Update apiDefinition.swagger.json * Modified XC-Gate Readme Modified according to the template. *Readme.md --- certified-connectors/XC-Gate/Readme.md | 43 + .../XC-Gate/apiDefinition.swagger.json | 1625 +++++++++++++++++ .../XC-Gate/apiProperties.json | 18 + 3 files changed, 1686 insertions(+) create mode 100644 certified-connectors/XC-Gate/Readme.md create mode 100644 certified-connectors/XC-Gate/apiDefinition.swagger.json create mode 100644 certified-connectors/XC-Gate/apiProperties.json diff --git a/certified-connectors/XC-Gate/Readme.md b/certified-connectors/XC-Gate/Readme.md new file mode 100644 index 0000000000..f88239132c --- /dev/null +++ b/certified-connectors/XC-Gate/Readme.md @@ -0,0 +1,43 @@ +# Title: XC-Gate (Preview) +XC-Gate is a form digitization solution that helps improve operational efficiency in record keeping and management. XC-Gate can digitize paper forms such as daily reports and inspection sheets that exist in any business. + +## Publisher: Technotree + +## Prerequisites +For more information on XC-Gate, please refer to this URL (https://product.technotree.com/xc-gate/). + +The following are required to use the connector. +* "XC-Gate.V3" or "XC-Gate.ENT" has been purchased and installed. +* For on-premise version, the server has already been published with a domain name or global IP address. +* WebAPI option is purchased and installed. + +**Please refer to the WebAPI option documentation included with your XC-Gate purchase.** +**Currently, the connector is a preview version and there is no official documentation.** + +## Supported Operations +This connector allows users to retrieve data stored in the XC-Gate. +​ +### LoginAuth (/webapi/login/auth) +Login to XC-Gate to obtain credentials. + +### ActionFind (/webapi/action/find) +Searches for and retrieves a list of achievements. + +### ActionGet (/webapi/action/get) +Obtains various types of information on designated performance. +(Restrictions : Only 20 pieces from DATA1~DATA20 can be obtained.) + +## Obtaining Credentials +The connector itself does not require an authentication process. +Please use the login action (LoginAuth) of the connector to obtain the XC-Gate user identification number and authentication key, and use the obtained key to access the XC-Gate. + +## Getting Started +Please use the following sequence to access XC-Gate. +1. Obtain "user identification number" and "authentication key" using "LoginAuth". +2. Use each action with the obtained user identification number and authentication key. + +## Known Issues and Limitations +Each action should be appended with the host to be accessed (ex. "technotree.xc-gate.com") as a query parameter. + +## Deployment Instructions +Please use these instructions(https://docs.microsoft.com/en-us/connectors/custom-connectors/paconn-cli) to deploy this connector as custom connector in Microsoft Flow and PowerApps diff --git a/certified-connectors/XC-Gate/apiDefinition.swagger.json b/certified-connectors/XC-Gate/apiDefinition.swagger.json new file mode 100644 index 0000000000..78a7edaadb --- /dev/null +++ b/certified-connectors/XC-Gate/apiDefinition.swagger.json @@ -0,0 +1,1625 @@ +{ + "swagger": "2.0", + "info": { + "version": "0.1.1", + "title": "XC-Gate (Preview)", + "contact": { + "name": "Technotree", + "url": "https://www.technotree.com/", + "email": "powerplatform-support@technotree.com" + }, + "description": "XC-Gate is a form digitization solution that helps improve operational efficiency in record keeping and management. XC-Gate can digitize paper forms such as daily reports and inspection sheets that exist in any business." + }, + "host": "ms-verification.technotree.co.jp", + "basePath": "/xcent", + "schemes": [ + "https" + ], + "consumes": [ + "application/json" + ], + "produces": [], + "paths": { + "/webapi/login/auth": { + "post": { + "responses": { + "200": { + "description": "default", + "schema": { + "type": "object", + "properties": { + "result": { + "type": "object", + "properties": { + "cd": { + "type": "string", + "description": "result code.", + "title": "result code" + }, + "error": { + "type": "string", + "description": "error detail code.", + "title": "error detail code" + } + }, + "description": "result" + }, + "userUCd": { + "type": "string", + "description": "user identification number.", + "title": "user identification number" + }, + "authKey": { + "type": "string", + "description": "authentication key.", + "title": "authentication key" + } + } + } + } + }, + "summary": "Login to XC-Gate", + "operationId": "LoginAuth", + "description": "Login to XC-Gate to obtain credentials.", + "parameters": [ + { + "name": "host", + "in": "query", + "required": false, + "type": "string", + "x-ms-summary": "host name", + "description": "Set the host name to which the connector is to be connected." + }, + { + "name": "body", + "in": "body", + "required": false, + "schema": { + "type": "object", + "properties": { + "companyCd": { + "type": "string", + "description": "company code.", + "title": "company code" + }, + "userCd": { + "type": "string", + "description": "user code.", + "title": "user code" + }, + "password": { + "type": "string", + "description": "password", + "title": "password" + } + } + } + } + ] + } + }, + "/webapi/action/find": { + "post": { + "responses": { + "200": { + "description": "default", + "schema": { + "type": "object", + "properties": { + "result": { + "type": "object", + "properties": { + "cd": { + "type": "string", + "description": "result code.", + "title": "result code" + }, + "error": { + "type": "string", + "description": "error detail code.", + "title": "error detail code" + } + }, + "description": "result" + }, + "totalCount": { + "type": "string", + "description": "number of all pages.", + "title": "number of all pages" + }, + "count": { + "type": "string", + "description": "number of items in a page.", + "title": "number of items in a page" + }, + "actionList": { + "type": "array", + "items": { + "type": "object", + "properties": { + "reportCd": { + "type": "string", + "description": "check sheet no.", + "title": "check sheet no." + }, + "title": { + "type": "string", + "description": "title", + "title": "title" + }, + "trxCd": { + "type": "string", + "description": "transaction code.", + "title": "transaction code" + }, + "updateTimestamp": { + "type": "string", + "description": "Last Update Time.", + "title": "Last Update Time" + }, + "updateUserCd": { + "type": "string", + "description": "last updated user code.", + "title": "last updated user code" + }, + "updateUserName": { + "type": "string", + "description": "last updated user name.", + "title": "last updated user name" + }, + "attribute": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "state of work completion.", + "title": "state of work completion" + }, + "lock": { + "type": "string", + "description": "lock attribute.", + "title": "lock attribute" + } + }, + "description": "attribute." + }, + "fieldMap": { + "type": "object", + "properties": { + "DATA1": { + "type": "object", + "properties": { + "fieldUCd": { + "type": "string", + "description": "item definition identification code.", + "title": "item definition identification code" + }, + "fieldNo": { + "type": "string", + "description": "item number.", + "title": "item number" + }, + "fieldName": { + "type": "string", + "description": "item name.", + "title": "item name" + }, + "fieldType": { + "type": "string", + "description": "item Type.", + "title": "item Type" + }, + "fieldValue": { + "type": "string", + "description": "item value.", + "title": "item value" + }, + "contentURL": { + "type": "string", + "description": "URL for content acquisition.", + "title": "URL for content acquisition" + }, + "updateTimestamp": { + "type": "string", + "description": "Last Update Time.", + "title": "Last Update Time" + }, + "updateUserCd": { + "type": "string", + "description": "last updated user code.", + "title": "last updated user code" + }, + "updateUserName": { + "type": "string", + "description": "last updated user name.", + "title": "last updated user name" + } + }, + "description": "DATA1" + }, + "DATA2": { + "type": "object", + "properties": { + "fieldUCd": { + "type": "string", + "description": "item definition identification code.", + "title": "item definition identification code" + }, + "fieldNo": { + "type": "string", + "description": "item number.", + "title": "item number" + }, + "fieldName": { + "type": "string", + "description": "item name.", + "title": "item name" + }, + "fieldType": { + "type": "string", + "description": "item Type.", + "title": "item Type" + }, + "fieldValue": { + "type": "string", + "description": "item value.", + "title": "item value" + }, + "contentURL": { + "type": "string", + "description": "URL for content acquisition.", + "title": "URL for content acquisition" + }, + "updateTimestamp": { + "type": "string", + "description": "Last Update Time.", + "title": "Last Update Time" + }, + "updateUserCd": { + "type": "string", + "description": "last updated user code.", + "title": "last updated user code" + }, + "updateUserName": { + "type": "string", + "description": "last updated user name.", + "title": "last updated user name" + } + }, + "description": "DATA2" + }, + "DATA3": { + "type": "object", + "properties": { + "fieldUCd": { + "type": "string", + "description": "item definition identification code.", + "title": "item definition identification code" + }, + "fieldNo": { + "type": "string", + "description": "item number.", + "title": "item number" + }, + "fieldName": { + "type": "string", + "description": "item name.", + "title": "item name" + }, + "fieldType": { + "type": "string", + "description": "item Type.", + "title": "item Type" + }, + "fieldValue": { + "type": "string", + "description": "item value.", + "title": "item value" + }, + "contentURL": { + "type": "string", + "description": "URL for content acquisition.", + "title": "URL for content acquisition" + }, + "updateTimestamp": { + "type": "string", + "description": "Last Update Time.", + "title": "Last Update Time" + }, + "updateUserCd": { + "type": "string", + "description": "last updated user code.", + "title": "last updated user code" + }, + "updateUserName": { + "type": "string", + "description": "last updated user name.", + "title": "last updated user name" + } + }, + "description": "DATA3" + }, + "DATA4": { + "type": "object", + "properties": { + "fieldUCd": { + "type": "string", + "description": "item definition identification code.", + "title": "item definition identification code" + }, + "fieldNo": { + "type": "string", + "description": "item number.", + "title": "item number" + }, + "fieldName": { + "type": "string", + "description": "item name.", + "title": "item name" + }, + "fieldType": { + "type": "string", + "description": "item Type.", + "title": "item Type" + }, + "fieldValue": { + "type": "string", + "description": "item value.", + "title": "item value" + }, + "contentURL": { + "type": "string", + "description": "URL for content acquisition.", + "title": "URL for content acquisition" + }, + "updateTimestamp": { + "type": "string", + "description": "Last Update Time.", + "title": "Last Update Time" + }, + "updateUserCd": { + "type": "string", + "description": "last updated user code.", + "title": "last updated user code" + }, + "updateUserName": { + "type": "string", + "description": "last updated user name.", + "title": "last updated user name" + } + }, + "description": "DATA4" + }, + "DATA5": { + "type": "object", + "properties": { + "fieldUCd": { + "type": "string", + "description": "item definition identification code.", + "title": "item definition identification code" + }, + "fieldNo": { + "type": "string", + "description": "item number.", + "title": "item number" + }, + "fieldName": { + "type": "string", + "description": "item name.", + "title": "item name" + }, + "fieldType": { + "type": "string", + "description": "item Type.", + "title": "item Type" + }, + "fieldValue": { + "type": "string", + "description": "item value.", + "title": "item value" + }, + "contentURL": { + "type": "string", + "description": "URL for content acquisition.", + "title": "URL for content acquisition" + }, + "updateTimestamp": { + "type": "string", + "description": "Last Update Time.", + "title": "Last Update Time" + }, + "updateUserCd": { + "type": "string", + "description": "last updated user code.", + "title": "last updated user code" + }, + "updateUserName": { + "type": "string", + "description": "last updated user name.", + "title": "last updated user name" + } + }, + "description": "DATA5" + }, + "DATA6": { + "type": "object", + "properties": { + "fieldUCd": { + "type": "string", + "description": "item definition identification code.", + "title": "item definition identification code" + }, + "fieldNo": { + "type": "string", + "description": "item number.", + "title": "item number" + }, + "fieldName": { + "type": "string", + "description": "item name.", + "title": "item name" + }, + "fieldType": { + "type": "string", + "description": "item Type.", + "title": "item Type" + }, + "fieldValue": { + "type": "string", + "description": "item value.", + "title": "item value" + }, + "contentURL": { + "type": "string", + "description": "URL for content acquisition.", + "title": "URL for content acquisition" + }, + "updateTimestamp": { + "type": "string", + "description": "Last Update Time.", + "title": "Last Update Time" + }, + "updateUserCd": { + "type": "string", + "description": "last updated user code.", + "title": "last updated user code" + }, + "updateUserName": { + "type": "string", + "description": "last updated user name.", + "title": "last updated user name" + } + }, + "description": "DATA6" + }, + "DATA7": { + "type": "object", + "properties": { + "fieldUCd": { + "type": "string", + "description": "item definition identification code.", + "title": "item definition identification code" + }, + "fieldNo": { + "type": "string", + "description": "item number.", + "title": "item number" + }, + "fieldName": { + "type": "string", + "description": "item name.", + "title": "item name" + }, + "fieldType": { + "type": "string", + "description": "item Type.", + "title": "item Type" + }, + "fieldValue": { + "type": "string", + "description": "item value.", + "title": "item value" + }, + "contentURL": { + "type": "string", + "description": "URL for content acquisition.", + "title": "URL for content acquisition" + }, + "updateTimestamp": { + "type": "string", + "description": "Last Update Time.", + "title": "Last Update Time" + }, + "updateUserCd": { + "type": "string", + "description": "last updated user code.", + "title": "last updated user code" + }, + "updateUserName": { + "type": "string", + "description": "last updated user name.", + "title": "last updated user name" + } + }, + "description": "DATA7" + }, + "DATA8": { + "type": "object", + "properties": { + "fieldUCd": { + "type": "string", + "description": "item definition identification code.", + "title": "item definition identification code" + }, + "fieldNo": { + "type": "string", + "description": "item number.", + "title": "item number" + }, + "fieldName": { + "type": "string", + "description": "item name.", + "title": "item name" + }, + "fieldType": { + "type": "string", + "description": "item Type.", + "title": "item Type" + }, + "fieldValue": { + "type": "string", + "description": "item value.", + "title": "item value" + }, + "contentURL": { + "type": "string", + "description": "URL for content acquisition.", + "title": "URL for content acquisition" + }, + "updateTimestamp": { + "type": "string", + "description": "Last Update Time.", + "title": "Last Update Time" + }, + "updateUserCd": { + "type": "string", + "description": "last updated user code.", + "title": "last updated user code" + }, + "updateUserName": { + "type": "string", + "description": "last updated user name.", + "title": "last updated user name" + } + }, + "description": "DATA8" + }, + "DATA9": { + "type": "object", + "properties": { + "fieldUCd": { + "type": "string", + "description": "item definition identification code.", + "title": "item definition identification code" + }, + "fieldNo": { + "type": "string", + "description": "item number.", + "title": "item number" + }, + "fieldName": { + "type": "string", + "description": "item name.", + "title": "item name" + }, + "fieldType": { + "type": "string", + "description": "item Type.", + "title": "item Type" + }, + "fieldValue": { + "type": "string", + "description": "item value.", + "title": "item value" + }, + "contentURL": { + "type": "string", + "description": "URL for content acquisition.", + "title": "URL for content acquisition" + }, + "updateTimestamp": { + "type": "string", + "description": "Last Update Time.", + "title": "Last Update Time" + }, + "updateUserCd": { + "type": "string", + "description": "last updated user code.", + "title": "last updated user code" + }, + "updateUserName": { + "type": "string", + "description": "last updated user name.", + "title": "last updated user name" + } + }, + "description": "DATA9" + }, + "DATA10": { + "type": "object", + "properties": { + "fieldUCd": { + "type": "string", + "description": "item definition identification code.", + "title": "item definition identification code" + }, + "fieldNo": { + "type": "string", + "description": "item number.", + "title": "item number" + }, + "fieldName": { + "type": "string", + "description": "item name.", + "title": "item name" + }, + "fieldType": { + "type": "string", + "description": "item Type.", + "title": "item Type" + }, + "fieldValue": { + "type": "string", + "description": "item value.", + "title": "item value" + }, + "contentURL": { + "type": "string", + "description": "URL for content acquisition.", + "title": "URL for content acquisition" + }, + "updateTimestamp": { + "type": "string", + "description": "Last Update Time.", + "title": "Last Update Time" + }, + "updateUserCd": { + "type": "string", + "description": "last updated user code.", + "title": "last updated user code" + }, + "updateUserName": { + "type": "string", + "description": "last updated user name.", + "title": "last updated user name" + } + }, + "description": "DATA10" + }, + "DATA11": { + "type": "object", + "properties": { + "fieldUCd": { + "type": "string", + "description": "item definition identification code.", + "title": "item definition identification code" + }, + "fieldNo": { + "type": "string", + "description": "item number.", + "title": "item number" + }, + "fieldName": { + "type": "string", + "description": "item name.", + "title": "item name" + }, + "fieldType": { + "type": "string", + "description": "item Type.", + "title": "item Type" + }, + "fieldValue": { + "type": "string", + "description": "item value.", + "title": "item value" + }, + "contentURL": { + "type": "string", + "description": "URL for content acquisition.", + "title": "URL for content acquisition" + }, + "updateTimestamp": { + "type": "string", + "description": "Last Update Time.", + "title": "Last Update Time" + }, + "updateUserCd": { + "type": "string", + "description": "last updated user code.", + "title": "last updated user code" + }, + "updateUserName": { + "type": "string", + "description": "last updated user name.", + "title": "last updated user name" + } + }, + "description": "DATA11" + }, + "DATA12": { + "type": "object", + "properties": { + "fieldUCd": { + "type": "string", + "description": "item definition identification code.", + "title": "item definition identification code" + }, + "fieldNo": { + "type": "string", + "description": "item number.", + "title": "item number" + }, + "fieldName": { + "type": "string", + "description": "item name.", + "title": "item name" + }, + "fieldType": { + "type": "string", + "description": "item Type.", + "title": "item Type" + }, + "fieldValue": { + "type": "string", + "description": "item value.", + "title": "item value" + }, + "contentURL": { + "type": "string", + "description": "URL for content acquisition.", + "title": "URL for content acquisition" + }, + "updateTimestamp": { + "type": "string", + "description": "Last Update Time.", + "title": "Last Update Time" + }, + "updateUserCd": { + "type": "string", + "description": "last updated user code.", + "title": "last updated user code" + }, + "updateUserName": { + "type": "string", + "description": "last updated user name.", + "title": "last updated user name" + } + }, + "description": "DATA12" + }, + "DATA13": { + "type": "object", + "properties": { + "fieldUCd": { + "type": "string", + "description": "item definition identification code.", + "title": "item definition identification code" + }, + "fieldNo": { + "type": "string", + "description": "item number.", + "title": "item number" + }, + "fieldName": { + "type": "string", + "description": "item name.", + "title": "item name" + }, + "fieldType": { + "type": "string", + "description": "item Type.", + "title": "item Type" + }, + "fieldValue": { + "type": "string", + "description": "item value.", + "title": "item value" + }, + "contentURL": { + "type": "string", + "description": "URL for content acquisition.", + "title": "URL for content acquisition" + }, + "updateTimestamp": { + "type": "string", + "description": "Last Update Time.", + "title": "Last Update Time" + }, + "updateUserCd": { + "type": "string", + "description": "last updated user code.", + "title": "last updated user code" + }, + "updateUserName": { + "type": "string", + "description": "last updated user name.", + "title": "last updated user name" + } + }, + "description": "DATA13" + }, + "DATA14": { + "type": "object", + "properties": { + "fieldUCd": { + "type": "string", + "description": "item definition identification code.", + "title": "item definition identification code" + }, + "fieldNo": { + "type": "string", + "description": "item number.", + "title": "item number" + }, + "fieldName": { + "type": "string", + "description": "item name.", + "title": "item name" + }, + "fieldType": { + "type": "string", + "description": "item Type.", + "title": "item Type" + }, + "fieldValue": { + "type": "string", + "description": "item value.", + "title": "item value" + }, + "contentURL": { + "type": "string", + "description": "URL for content acquisition.", + "title": "URL for content acquisition" + }, + "updateTimestamp": { + "type": "string", + "description": "Last Update Time.", + "title": "Last Update Time" + }, + "updateUserCd": { + "type": "string", + "description": "last updated user code.", + "title": "last updated user code" + }, + "updateUserName": { + "type": "string", + "description": "last updated user name.", + "title": "last updated user name" + } + }, + "description": "DATA14" + }, + "DATA15": { + "type": "object", + "properties": { + "fieldUCd": { + "type": "string", + "description": "item definition identification code.", + "title": "item definition identification code" + }, + "fieldNo": { + "type": "string", + "description": "item number.", + "title": "item number" + }, + "fieldName": { + "type": "string", + "description": "item name.", + "title": "item name" + }, + "fieldType": { + "type": "string", + "description": "item Type.", + "title": "item Type" + }, + "fieldValue": { + "type": "string", + "description": "item value.", + "title": "item value" + }, + "contentURL": { + "type": "string", + "description": "URL for content acquisition.", + "title": "URL for content acquisition" + }, + "updateTimestamp": { + "type": "string", + "description": "Last Update Time.", + "title": "Last Update Time" + }, + "updateUserCd": { + "type": "string", + "description": "last updated user code.", + "title": "last updated user code" + }, + "updateUserName": { + "type": "string", + "description": "last updated user name.", + "title": "last updated user name" + } + }, + "description": "DATA15" + }, + "DATA16": { + "type": "object", + "properties": { + "fieldUCd": { + "type": "string", + "description": "item definition identification code.", + "title": "item definition identification code" + }, + "fieldNo": { + "type": "string", + "description": "item number.", + "title": "item number" + }, + "fieldName": { + "type": "string", + "description": "item name.", + "title": "item name" + }, + "fieldType": { + "type": "string", + "description": "item Type.", + "title": "item Type" + }, + "fieldValue": { + "type": "string", + "description": "item value.", + "title": "item value" + }, + "contentURL": { + "type": "string", + "description": "URL for content acquisition.", + "title": "URL for content acquisition" + }, + "updateTimestamp": { + "type": "string", + "description": "Last Update Time.", + "title": "Last Update Time" + }, + "updateUserCd": { + "type": "string", + "description": "last updated user code.", + "title": "last updated user code" + }, + "updateUserName": { + "type": "string", + "description": "last updated user name.", + "title": "last updated user name" + } + }, + "description": "DATA16" + }, + "DATA17": { + "type": "object", + "properties": { + "fieldUCd": { + "type": "string", + "description": "item definition identification code.", + "title": "item definition identification code" + }, + "fieldNo": { + "type": "string", + "description": "item number.", + "title": "item number" + }, + "fieldName": { + "type": "string", + "description": "item name.", + "title": "item name" + }, + "fieldType": { + "type": "string", + "description": "item Type.", + "title": "item Type" + }, + "fieldValue": { + "type": "string", + "description": "item value.", + "title": "item value" + }, + "contentURL": { + "type": "string", + "description": "URL for content acquisition.", + "title": "URL for content acquisition" + }, + "updateTimestamp": { + "type": "string", + "description": "Last Update Time.", + "title": "Last Update Time" + }, + "updateUserCd": { + "type": "string", + "description": "last updated user code.", + "title": "last updated user code" + }, + "updateUserName": { + "type": "string", + "description": "last updated user name.", + "title": "last updated user name" + } + }, + "description": "DATA17" + }, + "DATA18": { + "type": "object", + "properties": { + "fieldUCd": { + "type": "string", + "description": "item definition identification code.", + "title": "item definition identification code" + }, + "fieldNo": { + "type": "string", + "description": "item number.", + "title": "item number" + }, + "fieldName": { + "type": "string", + "description": "item name.", + "title": "item name" + }, + "fieldType": { + "type": "string", + "description": "item Type.", + "title": "item Type" + }, + "fieldValue": { + "type": "string", + "description": "item value.", + "title": "item value" + }, + "contentURL": { + "type": "string", + "description": "URL for content acquisition.", + "title": "URL for content acquisition" + }, + "updateTimestamp": { + "type": "string", + "description": "Last Update Time.", + "title": "Last Update Time" + }, + "updateUserCd": { + "type": "string", + "description": "last updated user code.", + "title": "last updated user code" + }, + "updateUserName": { + "type": "string", + "description": "last updated user name.", + "title": "last updated user name" + } + }, + "description": "DATA18" + }, + "DATA19": { + "type": "object", + "properties": { + "fieldUCd": { + "type": "string", + "description": "item definition identification code.", + "title": "item definition identification code" + }, + "fieldNo": { + "type": "string", + "description": "item number.", + "title": "item number" + }, + "fieldName": { + "type": "string", + "description": "item name.", + "title": "item name" + }, + "fieldType": { + "type": "string", + "description": "item Type.", + "title": "item Type" + }, + "fieldValue": { + "type": "string", + "description": "item value.", + "title": "item value" + }, + "contentURL": { + "type": "string", + "description": "URL for content acquisition.", + "title": "URL for content acquisition" + }, + "updateTimestamp": { + "type": "string", + "description": "Last Update Time.", + "title": "Last Update Time" + }, + "updateUserCd": { + "type": "string", + "description": "last updated user code.", + "title": "last updated user code" + }, + "updateUserName": { + "type": "string", + "description": "last updated user name.", + "title": "last updated user name" + } + }, + "description": "DATA19" + }, + "DATA20": { + "type": "object", + "properties": { + "fieldUCd": { + "type": "string", + "description": "item definition identification code.", + "title": "item definition identification code" + }, + "fieldNo": { + "type": "string", + "description": "item number.", + "title": "item number" + }, + "fieldName": { + "type": "string", + "description": "item name.", + "title": "item name" + }, + "fieldType": { + "type": "string", + "description": "item Type.", + "title": "item Type" + }, + "fieldValue": { + "type": "string", + "description": "item value.", + "title": "item value" + }, + "contentURL": { + "type": "string", + "description": "URL for content acquisition.", + "title": "URL for content acquisition" + }, + "updateTimestamp": { + "type": "string", + "description": "Last Update Time.", + "title": "Last Update Time" + }, + "updateUserCd": { + "type": "string", + "description": "last updated user code.", + "title": "last updated user code" + }, + "updateUserName": { + "type": "string", + "description": "last updated user name.", + "title": "last updated user name" + } + }, + "description": "DATA20" + } + }, + "description": "fieldMap" + } + } + }, + "description": "actionList" + }, + "enableEpoch": { + "type": "string", + "description": "enableEpoch" + } + } + } + } + }, + "summary": "ActionFind", + "operationId": "ActionFind", + "description": "Searches for and retrieves a list of achievements.", + "parameters": [ + { + "name": "host", + "in": "query", + "required": false, + "type": "string", + "x-ms-summary": "host name", + "description": "Set the host name to which the connector is to be connected." + }, + { + "name": "body", + "in": "body", + "required": false, + "schema": { + "type": "object", + "properties": { + "companyCd": { + "type": "string", + "description": "company code.", + "title": "company code" + }, + "userUCd": { + "type": "string", + "description": "user identification number.", + "title": "user identification number" + }, + "authKey": { + "type": "string", + "description": "authentication key.", + "title": "authentication key" + }, + "reportCdList": { + "type": "array", + "items": { + "type": "string", + "title": "List of check sheet numbers to search", + "description": "List of check sheet numbers to search." + }, + "description": "reportCdList" + }, + "find": { + "type": "object", + "properties": { + "statement": { + "type": "string", + "description": "Statement/inter-element operator.", + "title": "Statement/inter-element operator" + }, + "statementList": { + "type": "array", + "items": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "search target item key.", + "title": "search target item key" + }, + "operator": { + "type": "string", + "description": "operator", + "title": "operator" + }, + "value": { + "type": "string", + "description": "search value.", + "title": "search value" + } + } + }, + "description": "statementList" + } + }, + "description": "find" + }, + "sortList": { + "type": "array", + "items": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "sort key.", + "title": "sort key" + }, + "value": { + "type": "string", + "description": "ascending-order entry.", + "title": "ascending-order entry" + } + } + }, + "description": "sortList" + }, + "pageSize": { + "type": "string", + "description": "number of lines retrieved in one page.", + "title": "number of lines retrieved in one page" + }, + "pageNo": { + "type": "string", + "description": "page number to get list.", + "title": "page number to get list" + }, + "requestList": { + "type": "array", + "items": { + "type": "object", + "properties": { + "fieldName": { + "type": "string", + "description": "item name.", + "title": "item name" + }, + "returnName": { + "type": "string", + "description": "DATA number. (fixed to DATA1, DATA2, ... DATA20)", + "title": "DATA number" + } + } + }, + "description": "requestList" + }, + "enableEpoch": { + "type": "string", + "description": "obtained on a daily basis.", + "title": "obtained on a daily basis" + } + } + } + } + ] + } + }, + "/webapi/action/get": { + "post": { + "responses": { + "200": { + "description": "default", + "schema": { + "type": "object", + "properties": { + "result": { + "type": "object", + "properties": { + "cd": { + "type": "string", + "description": "result code.", + "title": "result code" + }, + "error": { + "type": "string", + "description": "error detail code.", + "title": "error detail code" + } + }, + "description": "result" + }, + "action": { + "type": "object", + "properties": { + "reportCd": { + "type": "string", + "description": "check sheet no.", + "title": "check sheet no." + }, + "title": { + "type": "string", + "description": "title", + "title": "title" + }, + "trxCd": { + "type": "string", + "description": "transaction code.", + "title": "transaction code" + }, + "updateTimestamp": { + "type": "string", + "description": "Last Update Time.", + "title": "Last Update Time" + }, + "updateUserCd": { + "type": "string", + "description": "last updated user code.", + "title": "last updated user code" + }, + "updateUserName": { + "type": "string", + "description": "last updated user name.", + "title": "last updated user name" + }, + "attribute": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "state of work completion.", + "title": "state of work completion" + }, + "lock": { + "type": "string", + "description": "lock attribute.", + "title": "lock attribute" + } + }, + "description": "attribute" + }, + "trxData": { + "type": "object", + "properties": { + "sheetList": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sheetUCd": { + "type": "string", + "description": "sheet definition identification code.", + "title": "sheet definition identification code" + }, + "sheetNo": { + "type": "string", + "description": "sheet no.", + "title": "sheet no." + }, + "sheetName": { + "type": "string", + "description": "sheet name.", + "title": "sheet name" + }, + "fieldList": { + "type": "array", + "items": { + "type": "object", + "properties": { + "fieldUCd": { + "type": "string", + "description": "item definition identification code.", + "title": "item definition identification code" + }, + "fieldNo": { + "type": "string", + "description": "item number.", + "title": "item number" + }, + "fieldName": { + "type": "string", + "description": "item name.", + "title": "item name" + }, + "fieldType": { + "type": "string", + "description": "item Type.", + "title": "item Type" + }, + "fieldValue": { + "type": "string", + "description": "item value.", + "title": "item value" + }, + "contentURL": { + "type": "string", + "description": "URL for content acquisition.", + "title": "URL for content acquisition" + }, + "updateTimestamp": { + "type": "string", + "description": "Last Update Time.", + "title": "Last Update Time" + }, + "updateUserCd": { + "type": "string", + "description": "last updated user code.", + "title": "last updated user code" + }, + "updateUserName": { + "type": "string", + "description": "last updated user name.", + "title": "last updated user name" + } + } + }, + "description": "fieldList" + }, + "photoList": { + "type": "array", + "items": { + "type": "object", + "properties": { + "contentURL": { + "type": "string", + "description": "URL for content acquisition.", + "title": "URL for content acquisition" + } + } + }, + "description": "photoList" + } + } + }, + "description": "sheetList" + } + }, + "description": "trxData" + } + }, + "description": "action" + }, + "enableEpoch": { + "type": "string", + "description": "obtained on a daily basis.", + "title": "obtained on a daily basis" + } + } + } + } + }, + "summary": "ActionGet", + "description": "Obtains various types of information on designated performance.", + "operationId": "ActionGet", + "parameters": [ + { + "name": "host", + "in": "query", + "required": false, + "type": "string", + "x-ms-summary": "host name", + "description": "Set the host name to which the connector is to be connected." + }, + { + "name": "body", + "in": "body", + "required": false, + "schema": { + "type": "object", + "properties": { + "companyCd": { + "type": "string", + "description": "company code.", + "title": "company code" + }, + "userUCd": { + "type": "string", + "description": "user identification number.", + "title": "user identification number" + }, + "authKey": { + "type": "string", + "description": "authentication key.", + "title": "authentication key" + }, + "reportCd": { + "type": "string", + "description": "check sheet no.", + "title": "check sheet no." + }, + "title": { + "type": "string", + "description": "title of results to be obtained.", + "title": "title of results to be obtained" + }, + "trxCdx": { + "type": "string", + "description": "obtained on a daily basis.", + "title": "obtained on a daily basis" + }, + "enableEpoch": { + "type": "string", + "description": "obtained on a daily basis.", + "title": "obtained on a daily basis" + } + } + } + } + ] + } + } + }, + "definitions": {}, + "parameters": {}, + "responses": {}, + "securityDefinitions": {}, + "security": [], + "tags": [], + "x-ms-connector-metadata": [ + { + "propertyName": "Website", + "propertyValue": "https://product.technotree.com/xc-gate/" + }, + { + "propertyName": "Privacy policy", + "propertyValue": "https://www.technotree.com/privacy/" + }, + { + "propertyName": "Categories", + "propertyValue": "Productivity" + } + ] +} \ No newline at end of file diff --git a/certified-connectors/XC-Gate/apiProperties.json b/certified-connectors/XC-Gate/apiProperties.json new file mode 100644 index 0000000000..3d76f25f7d --- /dev/null +++ b/certified-connectors/XC-Gate/apiProperties.json @@ -0,0 +1,18 @@ +{ + "properties": { + "connectionParameters": {}, + "iconBrandColor": "#5A538A", + "capabilities": [], + "policyTemplateInstances": [ + { + "templateId": "dynamichosturl", + "title": "HostChange", + "parameters": { + "x-ms-apimTemplateParameter.urlTemplate": "https://@queryParameters('host')/xcent" + } + } + ], + "publisher": "TECHNOTREE CO., LTD.", + "stackOwner": "TECHNOTREE CO., LTD." + } +} \ No newline at end of file From d76dd082d4e85627dc5194076f292933e6adfc62 Mon Sep 17 00:00:00 2001 From: ilyasd7 <47628791+ilyasd7@users.noreply.github.com> Date: Fri, 29 Sep 2023 15:52:33 +0530 Subject: [PATCH 17/17] Adding new connector D7Messaging (#2972) * Commit * Update Readme.md * Update Readme.md * Update Readme.md * Add files via upload * Delete certified-connectors/D7Messaging/icon.png * Delete certified-connectors/D7Messaging/settings.json * Update Readme.md * Update Readme.md --- certified-connectors/D7Messaging/Readme.md | 67 ++ .../D7Messaging/apiDefinition.swagger.json | 751 ++++++++++++++++++ .../D7Messaging/apiProperties.json | 35 + 3 files changed, 853 insertions(+) create mode 100644 certified-connectors/D7Messaging/Readme.md create mode 100644 certified-connectors/D7Messaging/apiDefinition.swagger.json create mode 100644 certified-connectors/D7Messaging/apiProperties.json diff --git a/certified-connectors/D7Messaging/Readme.md b/certified-connectors/D7Messaging/Readme.md new file mode 100644 index 0000000000..aa23f5c7bf --- /dev/null +++ b/certified-connectors/D7Messaging/Readme.md @@ -0,0 +1,67 @@ +# D7Messaging + +D7 offers a dependable and affordable cloud-based messaging platform that enables enterprises to engage with their customers through SMS, chat, and various social media platforms. + +## Publisher: Signtaper Technologies FZCO + +## Prerequisites +You will need the following to proceed: +* A Microsoft Power Automate subscription +* A valid subscription in [D7API](https://app.d7networks.com/) +* D7API Authentication Token. + +## Supported Operations +The connector supports the following operations: +### `D7-Balance`: +Get D7API account balance + +No parameters are required. + +### `SMS-SendMessage`: +Send SMS through D7 SMS Gateway. + +Required parameters: content, originator, and recipients + +### `NumberLookup`: +D7's Number Lookup service to determine the current status of the number. + +Required parameters: recipient + +### `OTP-SendOTP`: +Generate and dispatch an OTP (One-Time Password) to a mobile number. + +Required parameters: originator, recipients, and content + +### `OTP-ResendOTP`: +Request a new OTP (One-Time Password) to be sent to a mobile number. + +Required parameters: otp_id + +### `OTP-VerifyOTP`: +Verify the OTP (One-Time Password) sent to your mobile number. + +Required parameters: otp_id, otp_code + +### `Viber-SendMessage`: +Send a message to a Viber number. + +Required parameters: originator, label, recipients, and content + +## Obtaining Credentials +#### Get D7SMS API_Username and API_Password +- [Register](https://app.d7networks.com/signup) for a D7API account +- [Sign In](https://app.d7networks.com/signin) with your email and password and navigate to [API Tokens](https://app.d7networks.com/api-tokens) + +Click on "Create Token" and provide a token "Name". + +On the next window, click on "Generate Token" and copy the Token + +You're now ready to start using this integration. + +## Known Issues and Limitations + +To initiate Viber Messaging services, organizations need to register with Viber. For the registration process, please get in touch with support@d7networks.com. + +## Deployment Instructions + +Please use the instructions located [here](https://docs.microsoft.com/en-us/connectors/custom-connectors/paconn-cli) to deploy this connector as custom connector in Microsoft Power Automate, Power Apps or Azure LogicApps. diff --git a/certified-connectors/D7Messaging/apiDefinition.swagger.json b/certified-connectors/D7Messaging/apiDefinition.swagger.json new file mode 100644 index 0000000000..f7021cb68c --- /dev/null +++ b/certified-connectors/D7Messaging/apiDefinition.swagger.json @@ -0,0 +1,751 @@ +{ + "swagger": "2.0", + "info": { + "title": "D7Messaging", + "contact": { + "name": "D7Networks Support", + "url": "https://d7networks.com/contact/", + "email": "support@d7networks.com" + }, + "description": "D7 offers a dependable and affordable cloud-based messaging platform that enables enterprises to engage with their customers through SMS, chat, and various social media platforms.", + "version": "1.0" + }, + "host": "api.d7networks.com", + "basePath": "/", + "schemes": [ + "https" + ], + "consumes": [], + "produces": [], + "paths": { + "/messages/v1/send": { + "post": { + "summary": "Sends SMS", + "description": "Send SMS through D7 SMS Gateway", + "operationId": "SMS-SendMessage", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "type": "object", + "properties": { + "messages": { + "type": "array", + "items": { + "type": "object", + "properties": { + "originator": { + "type": "string", + "description": "Originator (Sender ID)", + "title": "originator", + "x-ms-visibility": "important" + }, + "recipients": { + "type": "string", + "description": "Recipients (Destination numbers seperated by comma)", + "title": "recipients", + "x-ms-visibility": "important" + }, + "content": { + "type": "string", + "description": "The message content is being sent", + "title": "content", + "x-ms-visibility": "important" + }, + "report_url": { + "type": "string", + "description": "ReportURL (Call back URL to recieve delivery status report - DLR)", + "title": "report_url" + }, + "data_coding": { + "type": "string", + "description": "Data encoding value (Available options are text,unicode and auto)", + "title": "data_coding", + "default": "auto", + "enum": [ + "text", + "unicode", + "auto" + ] + }, + "num_lookup": { + "type": "boolean", + "description": "Activate the number lookup feature to ensure that messages are sent only to valid numbers", + "title": "num_lookup", + "enum": [ + true, + false + ], + "default": false + }, + "schedule_time": { + "type": "string", + "description": "Schedule time with timezone (eg: 2023-04-17T16:18+04:00)", + "title": "schedule_time", + "format": "" + }, + "client_ref": { + "type": "string", + "description": "client_ref", + "title": "client_ref", + "x-ms-visibility": "internal", + "default": "msflow" + }, + "channel": { + "type": "string", + "description": "channel", + "title": "channel", + "x-ms-visibility": "internal", + "default": "sms" + } + }, + "required": [ + "originator", + "content", + "recipients", + "client_ref", + "channel" + ] + }, + "description": "messages" + } + }, + "default": { + "messages": [ + { + "originator": "Sender_ID", + "recipients": "recipient_numbers_seperated_by_comma", + "content": "The message content" + } + ] + }, + "required": [ + "messages" + ] + }, + "required": true + } + ], + "responses": { + "200": { + "description": "default", + "schema": { + "type": "object", + "properties": { + "request_id": { + "type": "string", + "description": "request_id" + }, + "status": { + "type": "string", + "description": "status" + }, + "created_at": { + "type": "string", + "description": "created_at" + } + } + } + }, + "401": { + "description": "default", + "schema": { + "type": "object", + "properties": { + "detail": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "code" + }, + "message": { + "type": "string", + "description": "message" + } + }, + "description": "detail" + } + } + } + }, + "422": { + "description": "default", + "schema": { + "type": "object", + "properties": { + "detail": { + "type": "array", + "items": { + "type": "object", + "properties": { + "loc": { + "type": "array", + "items": { + "type": "string" + }, + "description": "loc" + }, + "msg": { + "type": "string", + "description": "msg" + }, + "type": { + "type": "string", + "description": "type" + } + } + }, + "description": "detail" + } + } + } + } + } + } + }, + "/messages/v1/balance": { + "get": { + "responses": { + "200": { + "description": "default", + "schema": { + "type": "object", + "properties": { + "balance": { + "type": "number", + "format": "float", + "description": "balance" + } + } + } + } + }, + "summary": "Check Balance", + "description": "Check D7API account balance", + "operationId": "D7-Balance", + "parameters": [] + } + }, + "/hlr/v1/lookup": { + "post": { + "responses": { + "200": { + "description": "default", + "schema": { + "type": "object", + "properties": { + "country_code": { + "type": "string", + "description": "country_code" + }, + "country_code_iso3": { + "type": "string", + "description": "country_code_iso3" + }, + "recipient": { + "type": "string", + "description": "recipient" + }, + "reachable": { + "type": "string", + "description": "reachable" + }, + "network": { + "type": "string", + "description": "network" + }, + "mcc": { + "type": "integer", + "format": "int32", + "description": "mcc" + }, + "mnc": { + "type": "integer", + "format": "int32", + "description": "mnc" + }, + "ported": { + "type": "boolean", + "description": "ported" + }, + "cic": { + "type": "string", + "description": "cic" + }, + "imsi": { + "type": "string", + "description": "imsi" + }, + "ocn": { + "type": "string", + "description": "ocn" + }, + "type": { + "type": "string", + "description": "type" + }, + "request_id": { + "type": "string", + "description": "request_id" + }, + "status_code": { + "type": "integer", + "format": "int32", + "description": "status_code" + }, + "status": { + "type": "string", + "description": "status" + } + } + } + } + }, + "summary": "Number Lookup", + "description": "D7's Number Lookup service to determine the current status of the number.", + "operationId": "NumberLookup", + "parameters": [ + { + "name": "body", + "in": "body", + "required": false, + "schema": { + "type": "object", + "properties": { + "recipient": { + "type": "string", + "description": "Recipient", + "title": "recipient" + } + }, + "required": [ + "recipient" + ] + } + } + ] + } + }, + "/verify/v1/otp/send-otp": { + "post": { + "responses": { + "200": { + "description": "default", + "schema": { + "type": "object", + "properties": { + "otp_id": { + "type": "string", + "description": "otp_id" + }, + "status": { + "type": "string", + "description": "status" + }, + "expiry": { + "type": "integer", + "format": "int32", + "description": "expiry" + } + } + } + } + }, + "summary": "Send OTP", + "description": "Generate and dispatch an OTP (One-Time Password) to a mobile number.", + "operationId": "OTP-SendOTP", + "parameters": [ + { + "name": "body", + "in": "body", + "required": false, + "schema": { + "type": "object", + "properties": { + "originator": { + "type": "string", + "description": "The Sender/Header of a message. We can use your brand name with a maximum character limit of 11 or your mobile number with your country code.", + "title": "originator", + "x-ms-visibility": "important" + }, + "recipient": { + "type": "string", + "description": "Mobile Numbers to send OTP Code. The recipient's phone number should have a country code prefix.", + "title": "recipient", + "x-ms-visibility": "important" + }, + "content": { + "type": "string", + "description": "OTP Message Content with {} placeholder", + "title": "content", + "default": "Greetings from D7 API, your mobile verification code is: {}", + "x-ms-visibility": "important" + }, + "data_coding": { + "type": "string", + "description": "data_coding", + "title": "data_coding", + "enum": [ + "auto", + "text", + "unicode" + ], + "default": "auto" + }, + "expiry": { + "type": "string", + "description": "OTP Expiry time in seconds", + "title": "expiry" + }, + "retry_delay": { + "type": "string", + "description": "Regeneate OTP delay", + "title": "retry_delay" + }, + "retry_count": { + "type": "string", + "description": "Regeneate OTP limit", + "title": "retry_count" + }, + "otp_code_length": { + "type": "string", + "description": "Length of OTP code. Minimum 2 to maximum 10", + "title": "otp_code_length" + }, + "otp_type": { + "type": "string", + "description": "Should be an enum with values: numeric, alpha, or alphanumeric", + "title": "otp_type", + "enum": [ + "numeric", + "alpha", + "alphanumeric" + ] + }, + "success_url": { + "type": "string", + "description": "Verification Success callback URL", + "title": "success_url" + }, + "failure_url": { + "type": "string", + "description": "Verification Failure callback URL", + "title": "failure_url" + } + }, + "required": [ + "content", + "data_coding", + "originator", + "recipient" + ] + } + } + ] + } + }, + "/verify/v1/otp/resend-otp": { + "post": { + "responses": { + "200": { + "description": "default", + "schema": { + "type": "object", + "properties": { + "otp_id": { + "type": "string", + "description": "otp_id" + }, + "status": { + "type": "string", + "description": "status" + }, + "expiry": { + "type": "integer", + "format": "int32", + "description": "expiry" + }, + "resend_count": { + "type": "integer", + "format": "int32", + "description": "resend_count" + } + } + } + } + }, + "summary": "Resend OTP", + "description": "Request a new OTP (One-Time Password) to be sent to a mobile number.", + "operationId": "OTP-ResendOTP", + "parameters": [ + { + "name": "body", + "in": "body", + "required": false, + "schema": { + "type": "object", + "properties": { + "otp_id": { + "type": "string", + "description": "The OTP ID returned by Send OTP endpoint", + "title": "otp_request_id" + } + }, + "required": [ + "otp_id" + ] + } + } + ] + } + }, + "/verify/v1/otp/verify-otp": { + "post": { + "responses": { + "200": { + "description": "default", + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "status" + } + } + } + } + }, + "description": "Verify the OTP (One-Time Password) sent to your mobile number.", + "operationId": "OTP-VerifyOTP", + "summary": "Verify OTP", + "parameters": [ + { + "name": "body", + "in": "body", + "required": false, + "schema": { + "type": "object", + "properties": { + "otp_id": { + "type": "string", + "description": "The OTP ID returned by Send OTP endpoint", + "title": "otp_id" + }, + "otp_code": { + "type": "string", + "description": "OTP Code received on customers mobile", + "title": "otp_code" + } + }, + "required": [ + "otp_code" + ] + } + } + ] + } + }, + "/viber/v1/send": { + "post": { + "summary": "Viber - Send Message", + "operationId": "Viber-SendMessage", + "description": "Send message to a Viber number.", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "messages": { + "type": "array", + "items": { + "type": "object", + "properties": { + "originator": { + "type": "string", + "description": "Sender ID", + "title": "originator", + "x-ms-visibility": "important" + }, + "recipients": { + "type": "string", + "description": "Destination Number", + "title": "recipients", + "x-ms-visibility": "important" + }, + "content": { + "type": "string", + "description": "The message content", + "title": "content", + "x-ms-visibility": "important" + }, + "image": { + "type": "string", + "description": "Image URL", + "title": "image" + }, + "button_action": { + "type": "string", + "description": "Button action URL", + "title": "button_action" + }, + "button_caption": { + "type": "string", + "description": "Text of Button", + "title": "button_caption" + }, + "call_back_url": { + "type": "string", + "description": "Call back URL to recieve delivery status report", + "title": "call_back_url" + }, + "label": { + "type": "string", + "description": "Type of message", + "title": "label", + "default": "PROMOTION", + "x-ms-visibility": "important", + "enum": [ + "TRANSACTION", + "PROMOTION" + ] + }, + "client_ref": { + "type": "string", + "description": "client_ref", + "title": "client_ref", + "x-ms-visibility": "internal", + "default": "msflow" + } + }, + "required": [ + "client_ref", + "content", + "originator", + "recipients", + "label" + ] + }, + "description": "messages" + } + }, + "required": [ + "messages" + ] + } + } + ], + "responses": { + "200": { + "description": "default", + "schema": { + "type": "object", + "properties": { + "request_id": { + "type": "string", + "description": "request_id" + }, + "status": { + "type": "string", + "description": "status" + }, + "created_at": { + "type": "string", + "description": "created_at" + } + } + } + }, + "401": { + "description": "default", + "schema": { + "type": "object", + "properties": { + "detail": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "code" + }, + "message": { + "type": "string", + "description": "message" + } + }, + "description": "detail" + } + } + } + }, + "422": { + "description": "default", + "schema": { + "type": "object", + "properties": { + "detail": { + "type": "array", + "items": { + "type": "object", + "properties": { + "loc": { + "type": "array", + "items": { + "type": "string" + }, + "description": "loc" + }, + "msg": { + "type": "string", + "description": "msg" + }, + "type": { + "type": "string", + "description": "type" + } + } + }, + "description": "detail" + } + } + } + } + } + } + } + }, + "x-ms-connector-metadata": [ + { + "propertyName": "Website", + "propertyValue": "https://d7networks.com" + }, + { + "propertyName": "Privacy policy", + "propertyValue": "https://d7networks.com/privacy/" + }, + { + "propertyName": "Categories", + "propertyValue": "Communication;IT Operations" + } + ], + "definitions": {}, + "parameters": {}, + "responses": {}, + "securityDefinitions": { + "API Key": { + "type": "apiKey", + "in": "header", + "name": "Authorization" + } + }, + "security": [ + { + "API Key": [] + } + ], + "tags": [] +} \ No newline at end of file diff --git a/certified-connectors/D7Messaging/apiProperties.json b/certified-connectors/D7Messaging/apiProperties.json new file mode 100644 index 0000000000..0d626549aa --- /dev/null +++ b/certified-connectors/D7Messaging/apiProperties.json @@ -0,0 +1,35 @@ +{ + "properties": { + "connectionParameters": { + "api_key": { + "type": "securestring", + "uiDefinition": { + "displayName": "Authorization", + "description": "The Authorization for this api", + "tooltip": "Provide your Authorization", + "constraints": { + "tabIndex": 2, + "clearText": false, + "required": "true" + } + } + } + }, + "iconBrandColor": "#9EDDFF", + "capabilities": [], + "policyTemplateInstances": [ + { + "templateId": "setheader", + "title": "Authorization Token", + "parameters": { + "x-ms-apimTemplateParameter.name": "Authorization", + "x-ms-apimTemplateParameter.value": "Bearer @headers('Authorization')", + "x-ms-apimTemplateParameter.existsAction": "override", + "x-ms-apimTemplate-policySection": "Request" + } + } + ], + "publisher": "Signtaper Technologies FZCO", + "stackOwner": "Signtaper Technologies FZCO" + } +} \ No newline at end of file