{
	"openapi": "3.0.0",
	"info": {
		"version": "1.0",
		"title": "Cognito Forms REST API",
		"description": "<p>The Cognito Forms REST API allows you to integrate your existing systems with Cognito Forms without third-party tools. The API gives you the ability to programmatically interact with your organization's forms and entries</p><p>The Cognito Forms API is available to all organizations on the Pro, Team, and Enterprise plans.</p><p>See our <a href='https://cognitoforms.com/support/475/data-integration/cognito-forms-api'>Getting Started Guide</a> to start interacting with the Cognito Forms API.</p><h2>Authentication</h2><p>The Cognito Forms API uses <a href='https://datatracker.ietf.org/doc/html/rfc6750#section-2'>bearer authentication</a>. Add your access token to the <code>Authorization</code> header, prefaced with <code>Bearer</code>. Alternatively, you can add your access token as a query string parameter (<code>access_token</code>). Access tokens sent as form-encoded parameters are not supported.</p>",
		"contact": {
			"name": "Cognito Forms Support",
			"email": "support@cognitoforms.com",
			"url": "https://www.cognitoforms.com/support"
		}
	},
	"servers": [
		{
			"url": "https://www.cognitoforms.com/api"
		}
	],
	"security": [
		{
			"Bearer": []
		}
	],
	"consumes": [],
	"produces": [ "application/json" ],
	"paths": {
		"/forms": {
			"get": {
				"tags": [ "Forms" ],
				"summary": "Get Forms",
				"description": "Retrieves a list of forms in your organization that are accessible by the specified API key. Archived forms are not included in the response.<br/>Required Scopes - `Form:Read`",
				"operationId": "GetForms",
				"responses": {
					"200": {
						"description": "OK",
						"schema": {
							"type": "array",
							"items": {
								"description": "A form reference that includes the name and ID of the form",
								"type": "object",
								"properties": {
									"Id": {
										"description": "The unique ID of the form",
										"type": "string"
									},
									"Name": {
										"description": "The name of the form",
										"type": "string"
									}
								}
							}
						},
						"examples": {
							"OK": [
								{
									"Id": "1",
									"Name": "My Form",
									"InternalName": "MyForm"
								},
								{
									"Id": "2",
									"Name": "My Form 2",
									"InternalName": "MyForm2"
								}
							]
						}
					},
					"401": {
						"$ref": "#/responses/401"
					},
					"403": {
						"$ref": "#/responses/403"
					},
					"429": {
						"$ref": "#/responses/429"
					},
					"500": {
						"$ref": "#/responses/500"
					}
				}
			}
		},
		"/forms/{formId}/schema": {
			"get": {
				"tags": [ "Forms" ],
				"summary": "Get Form Schema",
				"description": "Retrieves the schema for a specified form ID. The schema includes all fields, their data types, descriptions, and valid values.<br/>Required Scopes - `Form:Read`",
				"operationId": "GetFormSchema",
				"parameters": [
					{
						"name": "formId",
						"in": "path",
						"description": "The ID of the Form",
						"required": true,
						"type": "string"
					},
					{
						"name": "input",
						"in": "query",
						"description": "Determines whether the schema is for incoming requests to the API",
						"required": false,
						"default": false,
						"type": "boolean"
					},
					{
						"name": "includeLinks",
						"in": "query",
						"description": "Determines whether links should be included in the schema",
						"required": false,
						"default": true,
						"type": "boolean"
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"schema": {
							"description": "Schema for the specified Form",
							"type": "object"
						}
					},
					"400": {
						"$ref": "#/responses/400"
					},
					"401": {
						"$ref": "#/responses/401"
					},
					"403": {
						"$ref": "#/responses/403"
					},
					"404": {
						"$ref": "#/responses/404"
					},
					"429": {
						"$ref": "#/responses/429"
					},
					"500": {
						"$ref": "#/responses/500"
					}
				}
			}
		},
		"/forms/{formId}/entries": {
			"post": {
				"tags": [ "Entries" ],
				"summary": "Create Entry",
				"description": "<p>Creates an entry using the specified form ID and entry data. Use the <a href=\"#tag/forms/GET/forms/{formId}/schema\" >Get Form Schema</a> endpoint to see properties that can be set.</p><p>Calculation fields will be updated based on the updated entry data and cannot be set directly. File upload fields cannot be updated via the API.</p><p>All entry data will be included in the response, including data not specified. The response will also include metadata about the entry in the <code>Entry</code> property.</p><p>Required Scopes - <code>Entry:Read/Write</code></p>",
				"operationId": "CreateEntry",
				"consumes": [ "application/json" ],
				"parameters": [
					{
						"name": "formId",
						"in": "path",
						"description": "The ID of the Form for which you want to create an Entry",
						"required": true,
						"type": "string"
					}
				],
				"requestBody": {
					"description": "The Entry to create for the Form",
					"required": false,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/EntryInput"
							},
							"example": {
								"Entry": {
									"Action": "Submit",
									"Role": "Public"
								},
								"MyField": "SomeValue"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"schema": {
							"$ref": "#/components/schemas/EntryOutput"
						}
					},
					"400": {
						"$ref": "#/responses/400"
					},
					"401": {
						"$ref": "#/responses/401"
					},
					"403": {
						"$ref": "#/responses/403"
					},
					"404": {
						"$ref": "#/responses/404"
					},
					"429": {
						"$ref": "#/responses/429"
					},
					"500": {
						"$ref": "#/responses/500"
					}
				}
			}
		},
		"/forms/{formId}/entries/{entryId}": {
			"get": {
				"tags": [ "Entries" ],
				"summary": "Get Entry",
				"description": "Retrieves details for a specified entry.<br/>Required Scopes - `Entry:Read`",
				"operationId": "GetEntry",
				"consumes": [ "application/json" ],
				"parameters": [
					{
						"name": "formId",
						"in": "path",
						"description": "The ID of the Form for which you want to retrieve an Entry",
						"required": true,
						"type": "string"
					},
					{
						"name": "entryId",
						"in": "path",
						"description": "The ID of the Entry you want to retrieve",
						"required": true,
						"type": "string"
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"schema": {
							"$ref": "#/components/schemas/EntryOutput"
						}
					},
					"400": {
						"$ref": "#/responses/400"
					},
					"401": {
						"$ref": "#/responses/401"
					},
					"403": {
						"$ref": "#/responses/403"
					},
					"404": {
						"$ref": "#/responses/404"
					},
					"429": {
						"$ref": "#/responses/429"
					},
					"500": {
						"$ref": "#/responses/500"
					}
				}
			},
			"delete": {
				"tags": [ "Entries" ],
				"summary": "Delete Entry",
				"description": "Deletes an entry using the specified form ID and entry ID.<br/>Required Scopes - `Entry:Read/Write/Delete`",
				"operationId": "DeleteEntry",
				"parameters": [
					{
						"name": "formId",
						"in": "path",
						"description": "The ID of the Form for which you want to delete an Entry",
						"required": true,
						"type": "string"
					},
					{
						"name": "entryId",
						"in": "path",
						"description": "The Entry ID",
						"required": true,
						"type": "string"
					}
				],
				"responses": {
					"204": {
						"$ref": "#/responses/204"
					},
					"400": {
						"$ref": "#/responses/400"
					},
					"401": {
						"$ref": "#/responses/401"
					},
					"403": {
						"$ref": "#/responses/403"
					},
					"404": {
						"$ref": "#/responses/404"
					},
					"429": {
						"$ref": "#/responses/429"
					},
					"500": {
						"$ref": "#/responses/500"
					}
				}
			},
			"patch": {
				"tags": [ "Entries" ],
				"summary": "Update Entry",
				"description": "<p>Updates an entry using the specified form ID, entry ID, and entry data. Use the <a href=\"#tag/forms/GET/forms/{formId}/schema\" >Get Form Schema</a> endpoint to see properties that can be set.</p><p>This is a <code>PATCH</code> call, and you only need to specify values for fields you want to update.</p><p>To update an array, you must provide the entire array. To clear an array, set the property to an empty array. Setting a section or a field with sub-properties to <code>null</code> will clear all child fields/properties. Calculation fields will be updated based on the updated entry data and cannot be set directly. File upload fields cannot be updated via the API.</p><p>All entry data will be included in the response, including data not specified. The response will also include metadata about the entry in the <code>Entry</code> property.</p><p>Required Scopes - <code>Entry:Read/Write</code></p>",
				"operationId": "EditEntry",
				"consumes": [ "application/json" ],
				"parameters": [
					{
						"name": "formId",
						"in": "path",
						"description": "The ID of the Form for which you want to update an Entry",
						"required": true,
						"type": "string"
					},
					{
						"name": "entryId",
						"in": "path",
						"description": "The ID of the Entry you want to update",
						"required": true,
						"type": "string"
					}
				],
				"requestBody": {
					"name": "entry",
					"description": "The updated Entry data",
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"$ref": "#/components/schemas/EntryInput"
							}
						}
					},
					"example": {
						"Entry": {
							"Action": "Update",
							"Role": "Internal"
						},
						"MyField": "SomeValue"
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"schema": {
							"$ref": "#/components/schemas/EntryOutput"
						}
					},
					"400": {
						"$ref": "#/responses/400"
					},
					"401": {
						"$ref": "#/responses/401"
					},
					"403": {
						"$ref": "#/responses/403"
					},
					"404": {
						"$ref": "#/responses/404"
					},
					"409": {
						"$ref": "#/responses/409"
					},
					"429": {
						"$ref": "#/responses/429"
					},
					"500": {
						"$ref": "#/responses/500"
					}
				}
			}
		},
		"/forms/{formId}/import-entries": {
			"post": {
				"tags": [ "Entries" ],
				"summary": "Import Entries",
				"description": "Creates, updates, or deletes entries using provided file content.<br/>Required Scopes - `Form:Read` `Entry:Read/Write/Delete`",
				"operationId": "ImportEntries",
				"x-codeSamples": [
					{
						"lang": "Shell",
						"label": "cURL (Windows)",
						"source": "curl https://www.cognitoforms.com/api/forms/{formId}/import-entries \\\n  --request POST \\\n  --header \"Authorization: Bearer YOUR_SECRET_TOKEN\" \\\n  --form \"File=@/path/to/file.xlsx\" \\\n  --form \"ImportMode=CreateNew\" \\\n  --form \"Email=\" \\\n  --form \"MatchEntriesUsing=\""
					}
				],
				"parameters": [
					{
						"name": "formId",
						"in": "path",
						"description": "The Form ID",
						"required": true,
						"type": "string"
					}
				],
				"requestBody": {
					"description": "The request body for an Import",
					"content": {
						"multipart/form-data": {
							"schema": {
								"type": "object",
								"properties": {
									"File": {
										"description": "The file (.xlsx or .csv) containing the entries to import.",
										"type": "string",
										"format": "binary"
									},
									"ImportMode": {
										"description": "The mode for the import",
										"type": "string",
										"enum": [ "CreateNew", "UpdateExisting", "SyncEntries" ]
									},
									"Email": {
										"description": "The email address to receive import notifications",
										"type": "string",
										"format": "email"
									},
									"MatchEntriesUsing": {
										"description": "An entry ID substitute",
										"type": "string"
									}
								},
								"required": [ "ImportMode", "File" ]
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"schema": {
							"description": "The status of an import",
							"type": "object",
							"properties": {
								"Id": {
									"description": "The ID of the import",
									"type": "string"
								},
								"Status": {
									"description": "The status of the import",
									"type": "string"
								},
								"ErrorMessage": {
									"description": "A message describing why the import failed",
									"type": "string"
								}
							}
						}
					},
					"400": {
						"$ref": "#/responses/400"
					},
					"401": {
						"$ref": "#/responses/401"
					},
					"403": {
						"$ref": "#/responses/403"
					},
					"404": {
						"$ref": "#/responses/404"
					},
					"429": {
						"$ref": "#/responses/429"
					},
					"500": {
						"$ref": "#/responses/500"
					}
				}
			}
		},
		"/forms/{formId}/import-status/{importId}": {
			"get": {
				"tags": [ "Entries" ],
				"summary": "Get Import Status",
				"description": "Gets the current status of an import and returns the number of successful and unsuccessful entries.<br/> Required Scopes - `Form:Read`",
				"operationId": "GetImportStatus",
				"parameters": [
					{
						"name": "formId",
						"in": "path",
						"description": "The Form ID",
						"required": true,
						"type": "string"
					},
					{
						"name": "importId",
						"in": "path",
						"description": "The Import ID",
						"required": true,
						"type": "string"
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"schema": {
							"description": "The status of an import",
							"type": "object",
							"properties": {
								"Id": {
									"description": "The ID of the import",
									"type": "string"
								},
								"Status": {
									"description": "The status of the import",
									"type": "string"
								},
								"ErrorMessage": {
									"description": "A message describing why the import failed",
									"type": "string"
								},
								"SuccessfulEntries": {
									"description": "The number of entries successfully imported",
									"type": "integer"
								},
								"UnsuccessfulEntries": {
									"description": "The number of entries that failed to import",
									"type": "integer"
								},
								"TotalEntries": {
									"description": "The total number of entries in the import",
									"type": "integer"
								},
								"ImportLink": {
									"description": "The link to the entries page to download the annotated file",
									"type": "string"
								}
							}
						}
					},
					"400": {
						"$ref": "#/responses/400"
					},
					"401": {
						"$ref": "#/responses/401"
					},
					"403": {
						"$ref": "#/responses/403"
					},
					"404": {
						"$ref": "#/responses/404"
					},
					"429": {
						"$ref": "#/responses/429"
					},
					"500": {
						"$ref": "#/responses/500"
					}
				}
			}
		},
		"/forms/{formId}/entries/{entryId}/documents/{templateId}": {
			"get": {
				"tags": [ "Entries" ],
				"summary": "Get Document",
				"description": "Retrieves an entry document using the specified form ID, entry ID, and template ID.<br/>Required Scopes - `Entry:Read`",
				"operationId": "GetDocument",
				"parameters": [
					{
						"name": "formId",
						"in": "path",
						"description": "The Form ID",
						"required": true,
						"type": "string"
					},
					{
						"name": "entryId",
						"in": "path",
						"description": "The Entry ID",
						"required": true,
						"type": "string"
					},
					{
						"name": "templateId",
						"in": "path",
						"description": "The Template ID",
						"required": true,
						"type": "integer"
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"schema": {
							"$ref": "#/components/schemas/File"
						},
						"example": {
							"Id": "F-qvN$8d9elW8TG$skAIF29B",
							"Name": "MyForm - 1.pdf",
							"ContentType": "application/pdf",
							"Size": 25768,
							"File": "https://www.cognitoforms.com/fa/attachmentId?token=fileToken",
							"Content": "iVBORw0KGgoAAAANSUhEUgAAAJwAAACcCAYAAACKuMJNAAAACXBIWXMAACxLAAAsSwGlPZapAAASUVORK5CYII="
						}
					},
					"400": {
						"$ref": "#/responses/400"
					},
					"401": {
						"$ref": "#/responses/401"
					},
					"403": {
						"$ref": "#/responses/403"
					},
					"404": {
						"$ref": "#/responses/404"
					},
					"429": {
						"$ref": "#/responses/429"
					},
					"500": {
						"$ref": "#/responses/500"
					}
				}
			}
		},
		"/files": {
			"post": {
				"tags": [ "Entries" ],
				"summary": "Upload File",
				"description": "Generate a File ID using the provided file content. File ID can be used when Creating or Updating entries.<br/>Note: The File ID expires if not attached to an entry within 48 hours.<br/>Required Scopes - `Entry:Read/Write`",
				"operationId": "UploadFile",
				"requestBody": {
					"description": "The request body for uploading a file",
					"content": {
						"multipart/form-data": {
							"schema": {
								"type": "object",
								"properties": {
									"File": {
										"description": "The file to upload.",
										"type": "string",
										"format": "binary"
									}
								}	,
								"required": ["File"]
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"schema": {
							"type": "object",
							"properties": {
								"Id": {
									"description": "The File ID",
									"type": "string"
								},
								"Name": {
									"description": "The name of the file",
									"type": "string"
								},
								"ContentType": {
									"description": "The content type of the file",
									"type": "string"
								},
								"Size": {
									"description": "The size of the file in bytes",
									"type": "integer"
								}
							}
						},
						"example": {
							"Id": "F-qvN$8d9elW8TG$skAIF29B",
							"Name": "MyForm - 1.pdf",
							"ContentType": "application/pdf",
							"Size": 25768
						}
					},
					"400": {
						"$ref": "#/responses/400"
					},
					"401": {
						"$ref": "#/responses/401"
					},
					"403": {
						"$ref": "#/responses/403"
					},
					"404": {
						"$ref": "#/responses/404"
					},
					"429": {
						"$ref": "#/responses/429"
					},
					"500": {
						"$ref": "#/responses/500"
					}
				}
			}
		},
		"/forms/{formId}/entries/{entryId}/files/{fileId}": {
			"get": {
				"tags": [ "Entries" ],
				"summary": "Get File",
				"description": "Retrieves an uploaded file using the specified form ID, entry ID, and file ID.<br/>Required Scopes - `Entry:Read`",
				"operationId": "GetFile",
				"parameters": [
					{
						"name": "formId",
						"in": "path",
						"description": "The Form ID",
						"required": true,
						"type": "string"
					},
					{
						"name": "entryId",
						"in": "path",
						"description": "The Entry ID",
						"required": true,
						"type": "string"
					},
					{
						"name": "fileId",
						"in": "path",
						"description": "The File ID",
						"required": true,
						"type": "string"
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"schema": {
							"$ref": "#/components/schemas/File"
						},
						"example": {
							"Id": "F-qvN$8d9elW8TG$skAIF29B",
							"Name": "MyForm - 1.pdf",
							"ContentType": "application/pdf",
							"Size": 25768,
							"File": "https://www.cognitoforms.com/fa/attachmentId?token=fileToken",
							"Content": "iVBORw0KGgoAAAANSUhEUgAAAJwAAACcCAYAAACKuMJNAAAACXBIWXMAACxLAAAsSwGlPZapAAASUVORK5CYII="
						}
					},
					"400": {
						"$ref": "#/responses/400"
					},
					"401": {
						"$ref": "#/responses/401"
					},
					"403": {
						"$ref": "#/responses/403"
					},
					"404": {
						"$ref": "#/responses/404"
					},
					"429": {
						"$ref": "#/responses/429"
					},
					"500": {
						"$ref": "#/responses/500"
					}
				}
			}
		},
		"/forms/{formId}/public-link-availability": {
			"post": {
				"tags": [ "Forms" ],
				"summary": "Set Public Link Availability",
				"description": "Sets a form’s Public Link Availability using the provided Start Date, End Date, and Not Available Message.<br/>Required Scopes - `Form:Read/Write`",
				"operationId": "SetFormAvailability",
				"consumes": [ "application/json" ],
				"parameters": [
					{
						"name": "formId",
						"in": "path",
						"description": "The Form ID",
						"required": true,
						"type": "string"
					}
				],
				"requestBody": {
					"description": "Availability",
					"required": false,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"Start": {
										"description": "Availability start date",
										"type": "string",
										"format": "date-time"
									},
									"End": {
										"description": "Availability end date",
										"type": "string",
										"format": "date-time"
									},
									"Message": {
										"description": "Not Available Message",
										"type": "string"
									}
								}
							},
							"example": {
								"Start": "2020-01-01T00:00:00Z",
								"End": "2050-01-01T00:00:00Z",
								"Message": "This form is no longer available."
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"schema": {
							"description": "Form availability information such as start/end availability and not available message.",
							"type": "object",
							"properties": {
								"AvailabilityStart": {
									"description": "Form availability start",
									"type": "string",
									"format": "date-time"
								},
								"AvailabilityEnd": {
									"description": "Form availability end",
									"type": "string",
									"format": "date-time"
								},
								"NotAvailableMessage": {
									"description": "Not available message",
									"type": "string"
								}
							}
						},
						"example": {
							"AvailabilityStart": "2020-01-01T00:00:00Z",
							"AvailabilityEnd": "2050-01-01T00:00:00Z",
							"NotAvailableMessage": "This form is no longer available."
						}
					},
					"400": {
						"$ref": "#/responses/400"
					},
					"401": {
						"$ref": "#/responses/401"
					},
					"403": {
						"$ref": "#/responses/403"
					},
					"404": {
						"$ref": "#/responses/404"
					},
					"429": {
						"$ref": "#/responses/429"
					},
					"500": {
						"$ref": "#/responses/500"
					}
				}
			}
		}
	},
	"components": {
		"schemas": {
			"EntryOutput": {
			"description": "A Form Entry.",
			"type": "object",
			"properties": {
				"Id": {
					"description": "The Entry ID",
					"type": "string",
					"readOnly": true
				},
				"Entry": {
					"type": "object",
					"description": "Entry meta data",
					"properties": {
						"Document1": {
							"type": "string",
							"description": "Document1",
							"readOnly": true
						},
						"Document2": {
							"type": "string",
							"description": "Document2",
							"readOnly": true
						},
						"AdminLink": {
							"type": "string",
							"description": "Admin Link",
							"readOnly": true
						},
						"DateCreated": {
							"type": "string",
							"format": "date-time",
							"description": "Date Created",
							"readOnly": true
						},
						"DateSubmitted": {
							"type": "string",
							"format": "date-time",
							"description": "Date Submitted",
							"readOnly": true
						},
						"DateUpdated": {
							"type": "string",
							"format": "date-time",
							"description": "Date Updated",
							"readOnly": true
						},
						"Number": {
							"type": "integer",
							"description": "Number",
							"readOnly": true
						},
						"Timestamp": {
							"type": "string",
							"format": "date-time",
							"description": "Timestamp",
							"readOnly": true
						},
						"User": {
							"type": "object",
							"description": "User",
							"readOnly": true,
							"properties": {
								"Email": {
									"type": "string",
									"description": "Email",
									"readOnly": true
								},
								"Name": {
									"type": "string",
									"description": "Name",
									"readOnly": true
								}
							}
						},
						"Action": {
							"type": "string",
							"description": "Action",
							"enum": [
								"Submit",
								"Update"
							]
						},
						"Role": {
							"type": "string",
							"description": "Role",
							"enum": [
								"Public",
								"Internal",
								"Reviewer"
							]
						},
						"Status": {
							"type": "string",
							"description": "Status",
							"enum": [
								"Incomplete",
								"Submitted",
								"Reviewed",
								"Complete"
							],
							"readOnly": true
						},
						"PublicLink": {
							"type": "string",
							"description": "PublicLink",
							"readOnly": true
						},
						"InternalLink": {
							"type": "string",
							"description": "InternalLink",
							"readOnly": true
						},
						"ReviewerLink": {
							"type": "string",
							"description": "ReviewerLink",
							"readOnly": true
						},
						"Order": {
							"$ref": "#/components/schemas/Order"
						}
					}
				}
			}
		},
	"EntryInput": {
			"description": "A Form Entry.",
			"type": "object",
			"properties": {
				"Entry": {
					"type": "object",
					"description": "Entry meta data",
					"properties": {
						"Action": {
							"type": "string",
							"description": "Action",
							"enum": [
								"Submit",
								"Update"
							]
						},
						"Role": {
							"type": "string",
							"description": "Role",
							"enum": [
								"Public",
								"Internal",
								"Reviewer"
							]
						},
						"Order": {
							"$ref": "#/components/schemas/Order"
						}
					}
				}
			}
		},
		"Order": {
			"type": "object",
			"description": "Order",
			"readOnly": true,
			"properties": {
				"AdditionalFees": {
					"type": "number",
					"description": "Additional Fees",
					"readOnly": true
				},
				"AmountDue": {
					"type": "number",
					"description": "Amount Due",
					"readOnly": true
				},
				"AmountPaid": {
					"type": "number",
					"description": "Amount Paid",
					"readOnly": true
				},
				"BillingAddress": {
					"type": "object",
					"description": "Billing Address",
					"readOnly": true,
					"properties": {
						"City": {
							"type": "string",
							"description": "City"
						},
						"CityStatePostalCode": {
							"type": "string",
							"description": "City State Postal Code",
							"readOnly": true
						},
						"Country": {
							"type": "string",
							"description": "Country"
						},
						"CountryCode": {
							"type": "string",
							"description": "Country Code"
						},
						"FullAddress": {
							"type": "string",
							"description": "Full Address",
							"readOnly": true
						},
						"FullInternationalAddress": {
							"type": "string",
							"description": "Full International Address",
							"readOnly": true
						},
						"Latitude": {
							"type": "number",
							"description": "Latitude"
						},
						"Line1": {
							"type": "string",
							"description": "Address Line 1"
						},
						"Line2": {
							"type": "string",
							"description": "Address Line 2"
						},
						"Line3": {
							"type": "string",
							"description": "Address Line 3"
						},
						"Longitude": {
							"type": "number",
							"description": "Longitude"
						},
						"PostalCode": {
							"type": "string",
							"description": "Postal Code"
						},
						"State": {
							"type": "string",
							"description": "State"
						},
						"StreetAddress": {
							"type": "string",
							"description": "Street Address",
							"readOnly": true
						},
						"Type": {
							"type": "string",
							"description": "Type"
						}
					}
				},
				"BillingName": {
					"type": "object",
					"description": "Billing Name",
					"readOnly": true,
					"properties": {
						"First": {
							"type": "string",
							"description": "First"
						},
						"FirstAndLast": {
							"type": "string",
							"description": "First And Last",
							"readOnly": true
						},
						"Last": {
							"type": "string",
							"description": "Last"
						},
						"Middle": {
							"type": "string",
							"description": "Middle"
						},
						"MiddleInitial": {
							"type": "string",
							"description": "Middle Initial"
						},
						"Prefix": {
							"type": "string",
							"description": "Prefix"
						},
						"Suffix": {
							"type": "string",
							"description": "Suffix"
						}
					}
				},
				"Date": {
					"type": "string",
					"format": "date-time",
					"description": "Date",
					"readOnly": true
				},
				"EmailAddress": {
					"type": "string",
					"description": "Email Address",
					"readOnly": true
				},
				"Fees": {
					"type": "array",
					"items": {
						"type": "object",
						"properties": {
							"Amount": {
								"type": "number",
								"description": "Amount"
							},
							"Description": {
								"type": "string",
								"description": "Description"
							},
							"IsProcessingFee": {
								"type": "boolean",
								"description": "Is Processing Fee"
							},
							"Name": {
								"type": "string",
								"description": "Name"
							}
						}
					},
					"readOnly": true
				},
				"Id": {
					"type": "string",
					"description": "ID",
					"readOnly": true
				},
				"LineItems": {
					"type": "array",
					"items": {
						"type": "object",
						"properties": {
							"Amount": {
								"type": "number",
								"description": "Amount"
							},
							"Description": {
								"type": "string",
								"description": "Description"
							},
							"Group": {
								"type": "string",
								"description": "Group"
							},
							"Name": {
								"type": "string",
								"description": "Name"
							}
						}
					},
					"readOnly": true
				},
				"OrderAmount": {
					"type": "number",
					"description": "Order Amount",
					"readOnly": true
				},
				"OrderId": {
					"type": "string",
					"description": "Order ID",
					"readOnly": true
				},
				"PaymentConfirmationNumber": {
					"type": "string",
					"description": "Payment Confirmation Number",
					"readOnly": true
				},
				"PaymentDate": {
					"type": "string",
					"format": "date-time",
					"description": "Payment Date",
					"readOnly": true
				},
				"PaymentMessage": {
					"type": "string",
					"description": "Payment Message",
					"readOnly": true
				},
				"PaymentMethod": {
					"type": "string",
					"description": "Payment Method",
					"readOnly": true
				},
				"PaymentStatus": {
					"type": "string",
					"description": "Payment Status",
					"readOnly": true
				},
				"PhoneNumber": {
					"type": "string",
					"description": "Phone Number",
					"readOnly": true
				},
				"ProcessingFees": {
					"type": "number",
					"description": "Processing Fees",
					"readOnly": true
				},
				"RefundAmount": {
					"type": "number",
					"description": "Refund Amount",
					"readOnly": true
				},
				"RefundDate": {
					"type": "string",
					"format": "date-time",
					"description": "Refund Date",
					"readOnly": true
				},
				"SubTotal": {
					"type": "number",
					"description": "Sub Total",
					"readOnly": true
				}
			}
		},
		"File": {
			"description": "A file reference that includes file data and metadata",
			"type": "object",
			"properties": {
				"Id": {
					"description": "The unique ID of the file",
					"type": "string"
				},
				"Name": {
					"description": "The name of the file",
					"type": "string"
				},
				"ContentType": {
					"description": "The content type of the file",
					"type": "string"
				},
				"Size": {
					"description": "The size of the file",
					"type": "integer"
				},
				"File": {
					"description": "The URL of the file",
					"type": "string"
				},
				"Content": {
					"description": "The file content",
					"type": "string",
					"format": "byte"
				}
			}
		},
		"Error": {
			"description": "An error",
			"type": "object",
			"properties": {
				"Message": {
					"description": "A message describing the error",
					"type": "string"
				},
				"Type": {
					"description": "The type of the error",
					"type": "string"
				},
				"SupportCode": {
					"description": "A support code identifying the specific error",
					"type": "string"
				},
				"Data": {
					"description": "Data related to the error",
					"type": "object"
				}
			},
			"sample": {
				"$ref": "#/examples/ErrorExamples/UnknownError"
			}
		}
	},
	"securitySchemes": {
			"Bearer": {
				"type": "http",
				"scheme": "bearer",
				"in": "header",
				"name": "Authorization",
				"bearerFormat": "JWT"
			}
		}
	},
	"examples": {
		"ErrorExamples": {
			"UnknownError": {
				"Message": "An unknown error occurred.",
				"Type": "UnknownError",
				"SupportCode": "ABC-123-DEF",
				"Data": null
			},
			"TooManyRequests": {
				"Message": "Too many requests.",
				"Type": "TooManyRequests",
				"SupportCode": "ABC-123-DEF",
				"Data": null
			},
			"UnsupportedType": {
				"Message": "Unsupported type.",
				"Type": "UnsupportedType",
				"SupportCode": "ABC-123-DEF",
				"Data": {
					"Property": "MyField",
					"Value": "SomeValue",
					"ExpectedType": "String[]",
					"ProvidedType": "String"
				}
			},
			"ArrayWithUnsupportedType": {
				"Message": "Array contained unsupported type.",
				"Type": "ArrayWithUnsupportedType",
				"SupportCode": "ABC-123-DEF",
				"Data": {
					"Property": "MyField",
					"Value": [ { "Value": "SomeValue" } ],
					"ExpectedType": "String",
					"ProvidedType": "Object[]"
				}
			},
			"ArrayWithEmptyValue": {
				"Message": "Array contained an empty value.",
				"Type": "ArrayWithEmptyValue",
				"SupportCode": "ABC-123-DEF",
				"Data": {
					"Property": "MyField",
					"Value": [],
					"ExpectedType": "String",
					"ProvidedType": "Empty"
				}
			},
			"EmptyBody": {
				"Message": "No body specified.",
				"Type": "EmptyBody",
				"SupportCode": "ABC-123-DEF",
				"Data": null
			},
			"PropertyNotSettable": {
				"Message": "Property cannot be set.",
				"Type": "PropertyNotSettable",
				"SupportCode": "ABC-123-DEF",
				"Data": {
					"Property": "MyField",
					"Value": 2
				}
			},
			"MissingScope": {
				"Message": "Scope authorization failed.",
				"Type": "MissingScope",
				"SupportCode": "ABC-123-DEF",
				"Data": {
					"MissingScope": "Form:Read"
				}
			},
			"FormPermissionError": {
				"Message": "Form access denied.",
				"Type": "FormPermissionError",
				"SupportCode": "ABC-123-DEF",
				"Data": null
			},
			"FormIdNotSpecified": {
				"Message": "Form Id not specified.",
				"Type": "FormIdNotSpecified",
				"SupportCode": "ABC-123-DEF",
				"Data": null
			},
			"FormArchived": {
				"Message": "Form is archived.",
				"Type": "FormArchived",
				"SupportCode": "ABC-123-DEF",
				"Data": null
			},
			"FormDisabled": {
				"Message": "Form is disabled.",
				"Type": "FormDisabled",
				"SupportCode": "ABC-123-DEF",
				"Data": null
			},
			"EntryIdNotSpecified": {
				"Message": "Entry Id not specified.",
				"Type": "EntryIdNotSpecified",
				"SupportCode": "ABC-123-DEF",
				"Data": null
			},
			"EntryFormIdMismatch": {
				"Message": "Specified Entry Id does not match specified Form.",
				"Type": "EntryFormIdMismatch",
				"SupportCode": "ABC-123-DEF",
				"Data": null
			},
			"LookupNotFound": {
				"Message": "No Entry could be found for the specified value.",
				"Type": "LookupNotFound",
				"SupportCode": "ABC-123-DEF",
				"Data": {
					"Property": "MyField",
					"Value": "SomeValue"
				}
			},
			"SubmissionFailed": {
				"Message": "Entry could not be submitted.",
				"Type": "SubmissionFailed",
				"SupportCode": "ABC-123-DEF",
				"Data": null
			},
			"ActionNotAllowed": {
				"Message": "Action not allowed.",
				"Type": "ActionNotAllowed",
				"SupportCode": "ABC-123-DEF",
				"Data": null
			},
			"ActionNotFound": {
				"Message": "Action not found.",
				"Type": "ActionNotFound",
				"SupportCode": "ABC-123-DEF",
				"Data": null
			},
			"NoActionAllowed": {
				"Message": "No Action was allowed.",
				"Type": "NoActionAllowed",
				"SupportCode": "ABC-123-DEF",
				"Data": null
			},
			"InvalidEntryVersion": {
				"Message": "Invalid Entry version.",
				"Type": "InvalidEntryVersion",
				"SupportCode": "ABC-123-DEF",
				"Data": null
			},
			"StorageLimitExceeded": {
				"Message": "Storage limit exceeded.",
				"Type": "StorageLimitExceeded",
				"SupportCode": "ABC-123-DEF",
				"Data": null
			},
			"FormNotFound": {
				"Message": "Form not found.",
				"Type": "FormNotFound",
				"SupportCode": "ABC-123-DEF",
				"Data": null
			},
			"EntryNotFound": {
				"Message": "Entry not found.",
				"Type": "EntryNotFound",
				"SupportCode": "ABC-123-DEF",
				"Data": null
			},
			"DocumentTemplateNotFound": {
				"Message": "Document Template not found.",
				"Type": "DocumentTemplateNotFound",
				"SupportCode": "ABC-123-DEF",
				"Data": null
			}
		}
	},
	"responses": {
		"200": {
			"description": "OK"
		},
		"201": {
			"description": "Created"
		},
		"204": {
			"description": "No Content"
		},
		"400": {
			"description": "Bad Request",
			"schema": {
				"$ref": "#/components/schemas/Error"
			},
			"examples": {
				"UnknownError": {
					"$ref": "#/examples/ErrorExamples/UnknownError"
				},
				"UnsupportedType": {
					"$ref": "#/examples/ErrorExamples/UnsupportedType"
				},
				"ArrayWithUnsupportedType": {
					"$ref": "#/examples/ErrorExamples/ArrayWithUnsupportedType"
				},
				"ArrayWithEmptyValue": {
					"$ref": "#/examples/ErrorExamples/ArrayWithEmptyValue"
				},
				"EmptyBody": {
					"$ref": "#/examples/ErrorExamples/EmptyBody"
				},
				"PropertyNotSettable": {
					"$ref": "#/examples/ErrorExamples/PropertyNotSettable"
				},
				"FormIdNotSpecified": {
					"$ref": "#/examples/ErrorExamples/FormIdNotSpecified"
				},
				"FormArchived": {
					"$ref": "#/examples/ErrorExamples/FormArchived"
				},
				"FormDisabled": {
					"$ref": "#/examples/ErrorExamples/FormDisabled"
				},
				"EntryIdNotSpecified": {
					"$ref": "#/examples/ErrorExamples/EntryIdNotSpecified"
				},
				"EntryFormIdMismatch": {
					"$ref": "#/examples/ErrorExamples/EntryFormIdMismatch"
				},
				"LookupNotFound": {
					"$ref": "#/examples/ErrorExamples/LookupNotFound"
				},
				"SubmissionFailed": {
					"$ref": "#/examples/ErrorExamples/SubmissionFailed"
				},
				"ActionNotAllowed": {
					"$ref": "#/examples/ErrorExamples/ActionNotAllowed"
				},
				"ActionNotFound": {
					"$ref": "#/examples/ErrorExamples/ActionNotFound"
				},
				"NoActionAllowed": {
					"$ref": "#/examples/ErrorExamples/NoActionAllowed"
				},
				"InvalidEntryVersion": {
					"$ref": "#/examples/ErrorExamples/InvalidEntryVersion"
				}
			}
		},
		"401": {
			"description": "Unauthorized",
			"schema": {
				"$ref": "#/components/schemas/Error"
			},
			"examples": {
				"MissingScope": {
					"$ref": "#/examples/ErrorExamples/MissingScope"
				},
				"FormPermissionError": {
					"$ref": "#/examples/ErrorExamples/FormPermissionError"
				}
			}
		},
		"403": {
			"description": "Forbidden",
			"schema": {
				"$ref": "#/components/schemas/Error"
			},
			"examples": {
				"StorageLimitExceeded": {
					"$ref": "#/examples/ErrorExamples/StorageLimitExceeded"
				}
			}
		},
		"404": {
			"description": "Not Found",
			"schema": {
				"$ref": "#/components/schemas/Error"
			},
			"examples": {
				"FormNotFound": {
					"$ref": "#/examples/ErrorExamples/FormNotFound"
				},
				"EntryNotFound": {
					"$ref": "#/examples/ErrorExamples/EntryNotFound"
				},
				"DocumentTemplateNotFound": {
					"$ref": "#/examples/ErrorExamples/DocumentTemplateNotFound"
				}
			}
		},
		"409": {
			"description": "Conflict",
			"schema": {
				"$ref": "#/components/schemas/Error"
			},
			"examples": {
				"InvalidEntryVersion": {
					"$ref": "#/examples/ErrorExamples/InvalidEntryVersion"
				}
			}
		},
		"429": {
			"description": "Too Many Requests",
			"schema": {
				"$ref": "#/components/schemas/Error"
			},
			"headers": {
				"Retry-After": {
					"description": "The datetime after which you may retry the request",
					"type": "string"
				}
			},
			"examples": {
				"TooManyRequests": {
					"$ref": "#/examples/ErrorExamples/TooManyRequests"
				}
			}
		},
		"500": {
			"description": "Internal Server Error",
			"schema": {
				"$ref": "#/components/schemas/Error"
			},
			"examples": {
				"UnknownError": {
					"$ref": "#/examples/ErrorExamples/UnknownError"
				}
			}
		}
	}
}