From 0217814a6f4fecfeca5ae488932b9c89bdb9338f Mon Sep 17 00:00:00 2001 From: Nicholas Hance Date: Wed, 13 Mar 2024 11:36:04 -0400 Subject: [PATCH] Gravity Forms Professional: Initial Version (Certified Connector) (#3279) * 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 * Adds Gravity Forms Professional * Dynamic Schema for member items uses hardcoded value for speed * Update apiDefinition.swagger.json reword the GetForms description --- .../apiDefinition.swagger.json | 1657 +++++++++++++++++ .../apiProperties.json | 83 + .../Gravity Forms Professional/readme.md | 80 + 3 files changed, 1820 insertions(+) create mode 100644 certified-connectors/Gravity Forms Professional/apiDefinition.swagger.json create mode 100644 certified-connectors/Gravity Forms Professional/apiProperties.json create mode 100644 certified-connectors/Gravity Forms Professional/readme.md diff --git a/certified-connectors/Gravity Forms Professional/apiDefinition.swagger.json b/certified-connectors/Gravity Forms Professional/apiDefinition.swagger.json new file mode 100644 index 000000000..598b61e70 --- /dev/null +++ b/certified-connectors/Gravity Forms Professional/apiDefinition.swagger.json @@ -0,0 +1,1657 @@ +{ + "swagger": "2.0", + "info": { + "version": "1.0", + "title": "Gravity Forms Professional", + "description": "Connect your WordPress forms powered by Gravity Forms to the Power Platform. This is the Professional and Enterprise version, offering greater features.", + "contact": { + "name": "Reenhanced", + "url": "https://www.reenhanced.com", + "email": "support@reenhanced.com" + } + }, + "host": "we.buildbettersoftware.com", + "basePath": "/gfpa", + "schemes": ["https"], + "consumes": [ "application/json" ], + "produces": [ "application/json" ], + "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/1": { + "options": { + "operationId": "FormSchema", + "summary": "Retrieve schema for the form", + "description": "This is where the magic happens for member objects", + "x-ms-visibility": "internal", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "get": { + "type": "object" + }, + "post": { + "type": "object" + }, + "schema": { + "type": "object" + }, + "delete": { + "type": "object" + }, + "patch": { + "type": "object" + } + } + } + + } + } + } + }, + "/resources/forms": { + "get": { + "operationId": "GetForms", + "tags": ["Forms"], + "summary": "Get forms", + "description": "Get a list of forms", + "x-ms-visibility": "internal", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Form ID" + }, + "title": { + "type": "string", + "description": "Form name" + }, + "entries": { + "type": "string", + "description": "Number of entries" + } + } + } + } + } + } + } + }, + "/resources/forms/{id}": { + "get": { + "operationId": "GetForm", + "tags": ["Forms"], + "summary": "Get form", + "description": "Get a Gravity Forms Form (Work In Progress)", + "x-ms-visibility": "internal", + "parameters": [ + { + "name": "id", + "in": "path", + "x-ms-summary": "Form ID", + "x-ms-url-encoding": "single", + "description": "The ID of the form to get", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "x-ms-dynamic-properties": { + "operationId": "FormSchema", + "itemValuePath": "schema" + } + } + } + } + } + }, + "/resources/forms/{form_id}/fields": { + "options": { + "operationId": "GetFormFieldsSchema", + "summary": "Get the schema for a form's fields. Internal use only", + "description": "Get the schema for a form's fields. Internal use only", + "x-ms-visibility": "internal", + "parameters": [ + { + "in": "path", + "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" + }, + "schema": { + "type": "object" + } + } + } + } + } + }, + "get": { + "operationId": "GetFormFields", + "summary": "Get a Gravity Forms form's fields", + "description": "Get a list of fields for a Gravity Forms form", + "x-ms-visibility": "internal", + "parameters": [ + { + "name": "form_id", + "in": "path", + "description": "The ID of the form", + "x-ms-summary": "Form ID", + "x-ms-url-encoding": "single", + "required": true, + "type": "string" + }, + { + "name": "customFilter", + "in": "query", + "description": "Filter the fields by type", + "x-ms-summary": "Filter", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "fields": { + "type": "array", + "items": { + "x-ms-dynamic-properties": { + "operationId": "GetFormFieldsSchema", + "itemValuePath": "schema", + "parameters": { + "form_id": { + "value": "1" + } + } + } + } + } + } + } + } + } + } + }, + "/resources/forms/{form_id}/fields/{id}/choices": { + "options": { + "operationId": "GetFieldChoicesSchema", + "summary": "Get the schema for a field's choices. Internal use only", + "description": "Get the schema for a field's choices. Internal use only", + "x-ms-visibility": "internal", + "parameters": [ + { + "in": "path", + "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" + } + }, + { + "in": "path", + "name": "id", + "x-ms-summary": "Field ID", + "x-ms-url-encoding": "single", + "description": "Field ID", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "get": { + "type": "object" + }, + "post": { + "type": "object" + }, + "schema": { + "type": "object" + } + } + } + } + } + }, + "get": { + "operationId": "GetFieldChoices", + "summary": "Get a Gravity Forms field's choices", + "description": "Get a list of choices for a Gravity Forms field", + "x-ms-visibility": "important", + "parameters": [ + { + "name": "form_id", + "in": "path", + "description": "Select the form", + "x-ms-summary": "Form", + "x-ms-url-encoding": "single", + "required": true, + "type": "string", + "x-ms-dynamic-values": { + "operationId": "GetForms", + "value-title": "title", + "value-path": "id" + } + }, + { + "name": "id", + "in": "path", + "description": "Select the field", + "x-ms-summary": "Field", + "x-ms-url-encoding": "single", + "required": true, + "type": "string", + "x-ms-dynamic-values": { + "operationId": "GetFormFields", + "value-collection": "fields", + "value-title": "label", + "value-path": "id", + "parameters": { + "form_id": { + "parameter": "form_id" + }, + "customFilter": "choices isArray" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "x-ms-dynamic-properties": { + "operationId": "GetFieldChoicesSchema", + "itemValuePath": "schema", + "parameters": { + "form_id": { + "value": "1" + }, + "id": { + "value": "1" + } + } + } + } + } + } + }, + "put": { + "operationId": "UpdateFieldChoices", + "summary": "Update a Gravity Forms field's choices", + "description": "Update a list of choices for a Gravity Forms field", + "x-ms-visibility": "important", + "parameters": [ + { + "name": "form_id", + "in": "path", + "description": "Select the form", + "x-ms-summary": "Form", + "x-ms-url-encoding": "single", + "required": true, + "type": "string", + "x-ms-dynamic-values": { + "operationId": "GetForms", + "value-title": "title", + "value-path": "id" + } + }, + { + "name": "id", + "in": "path", + "description": "Select the field", + "x-ms-summary": "Field", + "x-ms-url-encoding": "single", + "required": true, + "type": "string", + "x-ms-dynamic-values": { + "operationId": "GetFormFields", + "value-collection": "fields", + "value-title": "label", + "value-path": "id", + "parameters": { + "form_id": { + "parameter": "form_id" + }, + "customFilter": "choices isArray" + } + } + }, + { + "in": "body", + "name": "body", + "description": "Request body", + "required": true, + "schema": { + "x-ms-dynamic-properties": { + "operationId": "GetFieldChoicesSchema", + "itemValuePath": "post", + "parameters": { + "form_id": { + "parameterReference": "form_id" + }, + "id": { + "value": "1" + } + } + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "x-ms-dynamic-properties": { + "operationId": "GetFieldChoicesSchema", + "itemValuePath": "schema", + "parameters": { + "form_id": { + "parameterReference": "form_id" + }, + "id": { + "value": "1" + } + } + } + } + } + } + } + }, + "/resources/feeds/schema": { + "get": { + "operationId": "GetFeedSchema", + "summary": "Get the schema for a feed", + "description": "Get the schema for a feed", + "x-ms-visibility": "internal", + "parameters": [ + { + "in": "query", + "name": "form_id", + "description": "Select the form for this trigger", + "x-ms-summary": "Form", + "type": "string", + "required": true, + "x-ms-dynamic-values": { + "operationId": "GetForms", + "value-title": "title", + "value-path": "id" + } + }, + { + "in": "query", + "name": "triggerOn", + "description": "Specify the trigger for this feed", + "x-ms-summary": "Trigger", + "type": "string", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "schema": { + "type": "object" + } + } + } + } + } + } + }, + "/resources/feeds/t/entry_update": { + "x-ms-notification-content": { + "schema": { + "x-ms-dynamic-properties": { + "operationId": "GetFeedSchema", + "itemValuePath": "schema", + "parameters": { + "form_id": { + "parameterReference": "body/form_id" + }, + "triggerOn": { + "value": "entry_update" + } + } + } + } + }, + "post": { + "operationId": "TriggerOnEntryUpdate", + "summary": "When a new Gravity Forms entry is updated", + "description": "Trigger a flow when an existing Gravity Forms entry is updated", + "x-ms-visibility": "important", + "x-ms-trigger": "single", + "x-ms-trigger-hint": "To see it work, update an existing entry for the selected form", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "Request body", + "required": true, + "schema": { + "$ref": "#/definitions/TriggerRequestBody" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/resources/feeds/t/form_submission": { + "x-ms-notification-content": { + "schema": { + "x-ms-dynamic-properties": { + "operationId": "GetFeedSchema", + "itemValuePath": "schema", + "parameters": { + "form_id": { + "parameterReference": "body/form_id" + }, + "triggerOn": { + "value": "form_submission" + } + } + } + } + }, + "post": { + "operationId": "TriggerOnFormSubmission", + "summary": "When a new Gravity Forms form is submitted", + "description": "Trigger a flow when a new Gravity Forms 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": { + "$ref": "#/definitions/TriggerRequestBody" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/resources/feeds/t/entry_update_status": { + "x-ms-notification-content": { + "schema": { + "x-ms-dynamic-properties": { + "operationId": "GetFeedSchema", + "itemValuePath": "schema", + "parameters": { + "form_id": { + "parameterReference": "body/form_id" + }, + "triggerOn": { + "value": "entry_update_status" + } + } + } + } + }, + "post": { + "operationId": "TriggerOnEntryUpdateStatus", + "summary": "When a Gravity Forms entry status is updated", + "description": "Trigger a flow when a Gravity Forms entry's status is updated", + "x-ms-visibility": "important", + "x-ms-trigger": "single", + "x-ms-trigger-hint": "To see it work, update the status of an existing entry for the selected form", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "Request body", + "required": true, + "schema": { + "$ref": "#/definitions/TriggerRequestBody" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/resources/feeds/t/entry_delete": { + "x-ms-notification-content": { + "schema": { + "x-ms-dynamic-properties": { + "operationId": "GetFeedSchema", + "itemValuePath": "schema", + "parameters": { + "form_id": { + "parameterReference": "body/form_id" + }, + "triggerOn": { + "value": "entry_delete" + } + } + } + } + }, + "post": { + "operationId": "TriggerOnEntryDelete", + "summary": "When a Gravity Forms entry is deleted", + "description": "Trigger a flow when a Gravity Forms entry is deleted", + "x-ms-visibility": "important", + "x-ms-trigger": "single", + "x-ms-trigger-hint": "To see it work, delete an existing entry for the selected form (not just move to trash)", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "Request body", + "required": true, + "schema": { + "$ref": "#/definitions/TriggerRequestBody" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/resources/feeds/t/payment_action": { + "x-ms-notification-content": { + "schema": { + "x-ms-dynamic-properties": { + "operationId": "GetFeedSchema", + "itemValuePath": "schema", + "parameters": { + "form_id": { + "parameterReference": "body/form_id" + }, + "triggerOn": { + "value": "payment_action" + } + } + } + } + }, + "post": { + "operationId": "TriggerOnPaymentAction", + "summary": "When a payment action occurs on a Gravity Forms entry", + "description": "Trigger a flow when a payment action occurs on a Gravity Forms entry", + "x-ms-visibility": "important", + "x-ms-trigger": "single", + "x-ms-trigger-hint": "To see it work, perform a payment action on an entry for the selected form", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "Request body", + "required": true, + "schema": { + "$ref": "#/definitions/TriggerRequestBody" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/resources/feeds/t/note_added": { + "x-ms-notification-content": { + "schema": { + "x-ms-dynamic-properties": { + "operationId": "GetFeedSchema", + "itemValuePath": "schema", + "parameters": { + "form_id": { + "parameterReference": "body/form_id" + }, + "triggerOn": { + "value": "note_added" + } + } + } + } + }, + "post": { + "operationId": "TriggerOnNoteAdded", + "summary": "When a Gravity Forms entry gets a note", + "description": "Trigger a flow when a Gravity Forms entry gets a note", + "x-ms-visibility": "important", + "x-ms-trigger": "single", + "x-ms-trigger-hint": "To see it work, add a note to an existing entry for the selected form", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "Request body", + "required": true, + "schema": { + "$ref": "#/definitions/TriggerRequestBody" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/resources/feeds/t/entry_approval_update": { + "x-ms-notification-content": { + "schema": { + "x-ms-dynamic-properties": { + "operationId": "GetFeedSchema", + "itemValuePath": "schema", + "parameters": { + "form_id": { + "parameterReference": "body/form_id" + }, + "triggerOn": { + "value": "entry_approval_update" + } + } + } + } + }, + "post": { + "operationId": "TriggerOnEntryEntryApprovalUpdate", + "summary": "When a Gravity Forms entry approval is changed (GravityView)", + "description": "Trigger a flow when a Gravity Forms entry approval is accepted/rejected/changed (GravityView)", + "x-ms-visibility": "important", + "x-ms-trigger": "single", + "x-ms-trigger-hint": "To see it work, make sure GravityView is installed and update the approval status of an existing entry for the selected form", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "Request body", + "required": true, + "schema": { + "$ref": "#/definitions/TriggerRequestBody" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/resources/flows/{id}": { + "delete": { + "operationId": "DeleteFlow", + "summary": "Delete a flow -- Internal usage", + "description": "Delete a flow -- Internal usage", + "x-ms-visibility": "internal", + "parameters": [ + { + "name": "id", + "in": "path", + "x-ms-url-encoding": "single", + "description": "Flow ID", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/resources/entries/query": { + "post": { + "operationId": "GetEntries", + "summary": "Get Gravity Forms form entries", + "description": "Get a list of Gravity Form entries for the selected form", + "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": "GetEntryCollectionSchema", + "itemValuePath": "get", + "parameters": { + "form_id": { + "parameterReference": "form_id" + } + } + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "entries": { + "type": "array", + "items": { + "x-ms-dynamic-properties": { + "operationId": "GetEntryCollectionSchema", + "itemValuePath": "schema", + "parameters": { + "form_id": { + "parameterReference": "form_id" + } + } + } + } + }, + "total_entries": { + "type": "integer", + "x-ms-summary": "Total Entries", + "description": "Total number of entries" + } + } + } + } + } + + } + }, + "/resources/entries": { + "options": { + "operationId": "GetEntryCollectionSchema", + "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-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" + } + } + } + } + } + }, + "post": { + "operationId": "CreateEntry", + "summary": "Create a Gravity Forms entry", + "description": "Create a Gravity Forms entry", + "x-ms-visibility": "important", + "parameters": [ + { + "in": "query", + "name": "form_id", + "description": "Select form", + "x-ms-summary": "Form", + "type": "string", + "required": true, + "x-ms-dynamic-values": { + "operationId": "GetForms", + "value-title": "title", + "value-path": "id" + } + }, + { + "in": "body", + "name": "body", + "description": "Request body", + "required": true, + "schema": { + "x-ms-dynamic-properties": { + "operationId": "GetEntrySchema", + "itemValuePath": "post", + "parameters": { + "form_id": { + "parameterReference": "form_id" + }, + "id": { + "value": "1" + } + } + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "x-ms-dynamic-properties": { + "operationId": "GetEntrySchema", + "itemValuePath": "schema", + "parameters": { + "form_id": { + "parameterReference": "form_id" + }, + "id": { + "value": "1" + } + } + } + } + } + }, + "x-ms-openai-data": { + "openai-enabled": true, + "operations": [ + { + "operationId": "CreateEntry", + "x-ms-require-user-confirmation": true + } + ] + } + } + }, + "/resources/entries/{id}": { + "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-dynamic-values": { + "operationId": "GetForms", + "value-title": "title", + "value-path": "id" + } + }, + { + "name": "id", + "in": "path", + "description": "The ID of the entry", + "x-ms-summary": "Entry ID", + "x-ms-url-encoding": "single", + "required": true, + "type": "string", + "x-ms-dynamic-values": { + "operationId": "GetEntries", + "value-title": "id", + "value-path": "id", + "parameters": { + "form_id": { + "parameter": "form_id" + } + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "get": { + "type": "object" + }, + "post": { + "type": "object" + }, + "schema": { + "type": "object" + }, + "patch": { + "type": "object" + }, + "put": { + "type": "object" + }, + "delete": { + "type": "object" + } + } + } + } + } + }, + "get": { + "operationId": "GetEntry", + "summary": "Get a Gravity Forms entry", + "description": "Get a single Gravity Forms entry containing all the fields", + "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", + "type": "string", + "required": true, + "x-ms-dynamic-values": { + "operationId": "GetForms", + "value-title": "title", + "value-path": "id" + } + }, + { + "name": "id", + "in": "path", + "description": "The ID of the entry", + "x-ms-summary": "Entry ID", + "x-ms-url-encoding": "single", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "x-ms-dynamic-properties": { + "operationId": "GetEntrySchema", + "itemValuePath": "schema", + "parameters": { + "form_id": { + "parameterReference": "form_id" + }, + "id": { + "value": "1" + } + } + } + } + } + }, + "x-ms-openai-data": { + "openai-enabled": true, + "operations": [ + { + "operationId": "GetEntry", + "x-ms-require-user-confirmation": false + } + ] + } + }, + "put": { + "operationId": "UpdateEntry", + "summary": "Update a Gravity Forms entry", + "description": "Update a Gravity Forms entry", + "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", + "type": "string", + "required": true, + "x-ms-dynamic-values": { + "operationId": "GetForms", + "value-title": "title", + "value-path": "id" + } + }, + { + "name": "id", + "in": "path", + "description": "The ID of the entry", + "x-ms-summary": "Entry ID", + "x-ms-url-encoding": "single", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "Request body", + "required": true, + "schema": { + "x-ms-dynamic-properties": { + "operationId": "GetEntrySchema", + "itemValuePath": "put", + "parameters": { + "form_id": { + "parameterReference": "form_id" + }, + "id": { + "value": "1" + } + } + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "x-ms-dynamic-properties": { + "operationId": "GetEntrySchema", + "itemValuePath": "post", + "parameters": { + "form_id": { + "parameterReference": "form_id" + }, + "id": { + "value": "1" + } + } + } + } + } + }, + "x-ms-openai-data": { + "openai-enabled": true, + "operations": [ + { + "operationId": "UpdateEntry", + "x-ms-require-user-confirmation": true + } + ] + } + }, + "delete": { + "operationId": "DeleteEntry", + "summary": "Delete a Gravity Forms entry", + "description": "Delete a Gravity Forms entry", + "x-ms-visibility": "important", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "The ID of the entry", + "x-ms-summary": "Entry ID", + "x-ms-url-encoding": "single", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK" + } + }, + "x-ms-openai-data": { + "openai-enabled": true, + "operations": [ + { + "operationId": "DeleteEntry", + "x-ms-require-user-confirmation": true + } + ] + } + } + }, + "/resources/validations": { + "options": { + "operationId": "GetValidationSchema", + "summary": "Get the schema for a validation. Internal use only", + "description": "Get the schema for a validation. 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-dynamic-values": { + "operationId": "GetForms", + "value-title": "title", + "value-path": "id" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "post": { + "type": "object" + }, + "schema": { + "type": "object" + } + } + } + } + } + }, + "post": { + "operationId": "ValidateEntry", + "summary": "Validate a Gravity Forms entry", + "description": "Validate a Gravity Forms entry", + "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", + "type": "string", + "required": true, + "x-ms-dynamic-values": { + "operationId": "GetForms", + "value-title": "title", + "value-path": "id" + } + }, + { + "in": "body", + "name": "body", + "description": "Request body", + "required": true, + "schema": { + "x-ms-dynamic-properties": { + "operationId": "GetValidationSchema", + "itemValuePath": "post", + "parameters": { + "form_id": { + "parameterReference": "form_id" + } + } + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "x-ms-dynamic-properties": { + "operationId": "GetValidationSchema", + "itemValuePath": "schema", + "parameters": { + "form_id": { + "parameterReference": "form_id" + } + } + } + } + } + }, + "x-ms-openai-data": { + "openai-enabled": true, + "operations": [ + { + "operationId": "ValidateEntry", + "x-ms-require-user-confirmation": true + } + ] + } + } + }, + "/resources/entries/{entry_id}/notes": { + "options": { + "operationId": "GetEntryNotesSchema", + "summary": "Get the schema for an entry's notes. Internal use only", + "description": "Get the schema for an entry's notes. Internal use only", + "x-ms-visibility": "internal", + "parameters": [ + { + "in": "path", + "name": "entry_id", + "x-ms-summary": "Entry ID", + "description": "Entry ID", + "required": true, + "type": "string", + "x-ms-url-encoding": "single" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "get": { + "type": "object" + }, + "post": { + "type": "object" + }, + "schema": { + "type": "object" + } + } + } + } + } + }, + "get": { + "operationId": "GetEntryNotes", + "summary": "Get a Gravity Forms entry's notes", + "description": "Get a list of notes for a Gravity Forms entry", + "x-ms-visibility": "important", + "parameters": [ + { + "name": "entry_id", + "in": "path", + "description": "The ID of the entry", + "x-ms-summary": "Entry ID", + "x-ms-url-encoding": "single", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "x-ms-dynamic-properties": { + "operationId": "GetEntryNotesSchema", + "itemValuePath": "schema", + "parameters": { + "entry_id": { + "value": "1" + } + } + } + } + } + } + }, + "x-ms-openai-data": { + "openai-enabled": true, + "operations": [ + { + "operationId": "GetEntryNotes", + "x-ms-require-user-confirmation": false + } + ] + } + }, + "post": { + "operationId": "CreateEntryNote", + "summary": "Create a note for a Gravity Forms entry", + "description": "Create a note for a Gravity Forms entry", + "x-ms-visibility": "important", + "parameters": [ + { + "name": "entry_id", + "in": "path", + "description": "The ID of the entry", + "x-ms-summary": "Entry ID", + "x-ms-url-encoding": "single", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "Request body", + "required": true, + "schema": { + "x-ms-dynamic-properties": { + "operationId": "GetEntryNotesSchema", + "itemValuePath": "post", + "parameters": { + "entry_id": { + "value": "1" + } + } + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "x-ms-dynamic-properties": { + "operationId": "GetEntryNotesSchema", + "itemValuePath": "schema", + "parameters": { + "entry_id": { + "value": "1" + } + } + } + } + } + }, + "x-ms-openai-data": { + "openai-enabled": true, + "operations": [ + { + "operationId": "CreateEntryNote", + "x-ms-require-user-confirmation": true + } + ] + } + } + }, + "/resources/entries/{entry_id}/attachments": { + "delete": { + "operationId": "DeleteEntryAttachment", + "summary": "Delete an attachment for a Gravity Forms entry", + "description": "Delete an attachment for a Gravity Forms entry", + "x-ms-visibility": "important", + "parameters": [ + { + "name": "entry_id", + "in": "path", + "description": "The ID of the entry", + "x-ms-summary": "Entry ID", + "x-ms-url-encoding": "single", + "required": true, + "type": "string" + }, + { + "name": "attachment_url", + "in": "query", + "description": "The URL of the attachment to delete", + "x-ms-summary": "Attachment URL", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/resources/entries/{entry_id}/attachments/all": { + "delete": { + "operationId": "DeleteAllEntryAttachments", + "summary": "Delete all attachments for a Gravity Forms entry", + "description": "Delete all attachments for a Gravity Forms entry", + "x-ms-visibility": "important", + "parameters": [ + { + "name": "entry_id", + "in": "path", + "description": "The ID of the entry", + "x-ms-summary": "Entry ID", + "x-ms-url-encoding": "single", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/resources/entries/{entry_id}/attachments/download": { + "get": { + "operationId": "DownloadEntryAttachment", + "summary": "Download an attachment for a Gravity Forms entry", + "description": "Download an attachment for a Gravity Forms entry", + "x-ms-visibility": "important", + "produces": [ + "application/octet-stream" + ], + "parameters": [ + { + "name": "entry_id", + "in": "path", + "description": "The ID of the entry", + "x-ms-summary": "Entry ID", + "x-ms-url-encoding": "single", + "required": true, + "type": "string" + }, + { + "name": "attachment_url", + "in": "query", + "description": "The URL of the attachment to download", + "x-ms-summary": "Attachment URL", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The attachment content" + } + }, + "x-ms-openai-data": { + "openai-enabled": true, + "operations": [ + { + "operationId": "DownloadEntryAttachment", + "x-ms-require-user-confirmation": false + } + ] + } + } + } + }, + "definitions": { + "TriggerRequestBody": { + "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": "Metadata for the trigger", + "x-ms-visibility": "internal", + "required": [ + "powerAutomateUrl" + ], + "properties": { + "powerAutomateUrl": { + "type":"string", + "x-ms-notification-url": true, + "x-ms-visibility": "internal" + } + } + } + } + }, + "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.reenhanced.com/privacy/" + }, + { + "propertyName": "Categories", + "propertyValue": "Marketing" + } + ], + "x-ms-openai-manifest": { + "humanName": "Gravity Forms Power Automate Professional", + "modelDescription": "This is the best way to connect WordPress forms powered by Gravity Forms to all Microsoft products through Power Automate. Gravity Forms is one of the most popular form plugins for WordPress and is preferred by millions of users around the world. Through this plugin by Reenhanced you can connect your WordPress website to Dynamics 365, SharePoint, Teams, Excel, and over 1000 other services. If you have a WordPress website and can install Gravity Forms onto it, you can use this plugin to connect your website to over 1000 different products. WordPress is the most popular website software in the world and powers over 40% of all sites on the internet.", + "contactEmail": "support@reenhanced.com", + "legalUrl": "https://reenhanced.com/products/gravity-forms-power-automate-pro/" + } +} diff --git a/certified-connectors/Gravity Forms Professional/apiProperties.json b/certified-connectors/Gravity Forms Professional/apiProperties.json new file mode 100644 index 000000000..d4e238770 --- /dev/null +++ b/certified-connectors/Gravity Forms Professional/apiProperties.json @@ -0,0 +1,83 @@ +{ + "properties": { + "connectionParameters": { + "licenseKey": { + "type": "string", + "uiDefinition": { + "constraints": { + "required": "true" + }, + "description": "Specify the license key for the Gravity Forms Power Automate Pro Plugin. (Find in Gravity Forms > Settings > Power Automate Pro)", + "displayName": "License Key", + "tooltip": "Copy this from the Gravity Forms > Settings > Power Automate Pro page." + } + }, + "secretKey": { + "type": "string", + "uiDefinition": { + "constraints": { + "required": "true", + "clearText": false + }, + "description": "Specify the secret key for the Gravity Forms Power Automate Pro plugin. (Find in Gravity Forms > Settings > Power Automate Pro)", + "displayName": "Secret Key", + "tooltip": "Copy this from the Gravity Forms > Settings > Power Automate Pro page." + } + }, + "wpSiteUrl": { + "type": "string", + "uiDefinition": { + "constraints": { + "required": "true" + }, + "description": "Specify the website URL for Power Automate connection. (Find in Gravity Forms > Settings > Power Automate Pro)", + "displayName": "URL For Power Automate Connection", + "tooltip": "Copy this from the Gravity Forms > Settings > Power Automate Pro page." + } + } + }, + "policyTemplateInstances": [ + { + "templateId": "dynamichosturl", + "title": "WordPress Site URL (include https://)", + "parameters": { + "x-ms-apimTemplateParameter.urlTemplate": "@connectionParameters('wpSiteUrl')/wp-json/gfpa/v1" + } + }, + { + "templateId": "setheader", + "title": "Set Product Identifier", + "parameters": { + "x-ms-apimTemplateParameter.name": "X-Reenhanced-Product", + "x-ms-apimTemplateParameter.value": "gravity-forms-power-automate-pro", + "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": "#365666", + "capabilities": [], + "publisher": "Reenhanced LLC", + "stackOwner": "Reenhanced LLC" + } +} diff --git a/certified-connectors/Gravity Forms Professional/readme.md b/certified-connectors/Gravity Forms Professional/readme.md new file mode 100644 index 000000000..2649a244a --- /dev/null +++ b/certified-connectors/Gravity Forms Professional/readme.md @@ -0,0 +1,80 @@ +# Gravity Forms Power Automate PRO + +Connect Gravity Forms to Power Automate with this professional plugin and connector by Reenhanced. You will be able to trigger Power Automate flows when your forms are submitted and access any previous entries through the actions. New features are in active development in this well supported plugin and connector. + +## Publisher: Reenhanced LLC +Reenhanced has built an API on top of Gravity Forms designed to connect Gravity Forms to the Power Platform. This is not useless middleware, but is instead a sensible and secure set of extensions to the Gravity Forms API that allows for direct communication between your WordPress site and Power Automate. This is a certified connector and is fully supported by Reenhanced. + +## Prerequisites +A paid license for Gravity Forms is not required, but is highly recommended. The Gravity Forms Power Automate pro plugin requires a valid license for use. Purchase your license at reenhanced.com. + +## Supported Operations + +### Trigger: When a Gravity Forms form is submitted +Send the complete entry to Power Automate. Your form fields are available as dynamic content for use in any additional action. + +### Trigger: When a Gravity Forms entry is updated +Whenever a Gravity Forms entry is updated, send the complete entry to Power Automate. Your form fields are available as dynamic content for use in any additional action. Updates include entry metadata and any changes to the form fields. + +### Trigger: When a Gravity Forms entry is deleted +Whenever a Gravity Forms entry is deleted, send the complete entry to Power Automate. Your form fields are available as dynamic content for use in any additional action. + +### Trigger: When a Gravity Forms entry status changes +Whenever a Gravity Forms entry status changes, send the complete entry to Power Automate. Your form fields are available as dynamic content for use in any additional action. Additionally, both the old and new status are available as dynamic content. + +### Trigger: When a Gravity Forms entry approval status changes (GravityView) +GravityView provides a way to approve or reject entries. Whenever an entry's approval status changes, send the complete entry to Power Automate. Your form fields are available as dynamic content for use in any additional action. Additionally, the new status is available as dynamic content. + +### Trigger: When a Gravity Forms entry payment status changes +Whenever a Gravity Forms entry payment status changes, send the complete entry to Power Automate. Your form fields are available as dynamic content for use in any additional action. The payment action is available as dynamic content. + +### Action: Get Gravity Forms form entries +Get a list of entries from any form and use them in your flow. Each form field is available as a dynamic content item. + +### Action: Get Gravity Forms form entry +Get a single entry from any form and use it in your flow. Each form field is available as a dynamic content item. + +### Action: Update Gravity Forms form entry +Update a single entry from any form. Each form field is available as a dynamic content item. Empty fields will not be updated unless they are provided in the request. + +### Action: Delete Gravity Forms form entry +Delete a single entry from any form. Each form field is available as a dynamic content item. + +### Action: Create Gravity Forms form entry +Create a new entry in any form. Each form field is available as a dynamic content item. Empty fields will not be created unless they are provided in the request. Entry is not validated prior to creation. + +### Action: Validate Gravity Forms form entry +Validate a new entry in any form. Each form field is available as a dynamic content item. Returns validation errors if any are found. Does not create the entry. + +### Action: Get Gravity Forms entry notes +Get a list of notes from any entry and use them in your flow. Each note is available as a dynamic content item. + +### Action: Create Gravity Forms entry note +Create a new note in any entry. Each note field is available as a dynamic content item. + +### Action: Download Gravity Forms entry file upload +Download a file upload given the attachment URL. This is useful for sending the file to another service or for use in a flow. Uses built-in authentication so it will not conflict with other plugins that may provide additional site security. + +### Action: Delete Gravity Forms entry file upload +Delete a file upload given the attachment URL. This is useful for cleaning up after a flow or for use in a flow. Uses built-in authentication so it will not conflict with other plugins that may provide additional site security. + +### Action: Delete all file uploads from a Gravity Forms entry +Delete all file uploads from an entry. This is useful for cleaning up after a flow or for use in a flow. Uses built-in authentication so it will not conflict with other plugins that may provide additional site security. + +## Obtaining Credentials +To use this connector you need to install the Gravity Forms Power Automate Pro plugin, available for purchase at reenhanced.com. When you install and activate the plugin, if you reload the Gravity Forms > Settings > Power Automate Pro 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 Gravity Forms form or use any other trigger. + +## Known Issues and Limitations + +We cannot guarantee compatibility with other plugins that modify the Gravity Forms API. If you are using a plugin that modifies the Gravity Forms API, you may experience issues with the connector. + +## 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. +