{
  "service": "expofp",
  "displayName": "ExpoFP",
  "categories": [
    "Productivity",
    "Marketing"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Token",
      "placeholder": "EXPOFP_API_TOKEN",
      "description": "ExpoFP API token sent as the token field in every JSON request body. Get it from your ExpoFP Profile page: https://expofp.com.",
      "extraFields": []
    }
  ],
  "homepageUrl": "https://expofp.com",
  "actions": [
    {
      "id": "expofp.add_exhibitor",
      "service": "expofp",
      "name": "add_exhibitor",
      "description": "Create a new exhibitor in one ExpoFP expo.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "eventId": {
            "type": "integer",
            "minimum": 1,
            "description": "Expo identifier where the exhibitor should be created."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "Exhibitor name."
          },
          "description": {
            "type": "string",
            "minLength": 1,
            "description": "Sanitized HTML description with the tags allowed by ExpoFP."
          },
          "featured": {
            "type": "boolean",
            "description": "Whether the exhibitor is featured."
          },
          "advertised": {
            "type": "boolean",
            "description": "Whether the exhibitor logo is advertised in the header."
          },
          "country": {
            "type": "string",
            "minLength": 1,
            "description": "Country."
          },
          "address": {
            "type": "string",
            "minLength": 1,
            "description": "Address line 1."
          },
          "address2": {
            "type": "string",
            "minLength": 1,
            "description": "Address line 2."
          },
          "city": {
            "type": "string",
            "minLength": 1,
            "description": "City."
          },
          "state": {
            "type": "string",
            "minLength": 1,
            "description": "State or province."
          },
          "zip": {
            "type": "string",
            "minLength": 1,
            "description": "ZIP or postal code."
          },
          "phone1": {
            "type": "string",
            "minLength": 1,
            "description": "Primary phone number."
          },
          "phone2": {
            "type": "string",
            "minLength": 1,
            "description": "Secondary phone number."
          },
          "publicEmail": {
            "type": "string",
            "minLength": 1,
            "description": "Public email address."
          },
          "privateEmail": {
            "type": "string",
            "minLength": 1,
            "description": "Private email address."
          },
          "vatNumber": {
            "type": "string",
            "minLength": 1,
            "description": "VAT number."
          },
          "website": {
            "type": "string",
            "minLength": 1,
            "description": "Website URL."
          },
          "facebook": {
            "type": "string",
            "minLength": 1,
            "description": "Facebook URL."
          },
          "instagram": {
            "type": "string",
            "minLength": 1,
            "description": "Instagram URL."
          },
          "linkedin": {
            "type": "string",
            "minLength": 1,
            "description": "LinkedIn URL."
          },
          "twitter": {
            "type": "string",
            "minLength": 1,
            "description": "Twitter or X URL."
          },
          "googlePlus": {
            "type": "string",
            "minLength": 1,
            "description": "Google+ URL."
          },
          "xing": {
            "type": "string",
            "minLength": 1,
            "description": "Xing URL."
          },
          "youtube": {
            "type": "string",
            "minLength": 1,
            "description": "YouTube URL."
          },
          "videoUrl": {
            "type": "string",
            "minLength": 1,
            "description": "Video URL."
          },
          "contactName": {
            "type": "string",
            "minLength": 1,
            "description": "Contact person name."
          },
          "contactPhone": {
            "type": "string",
            "minLength": 1,
            "description": "Contact person phone number."
          },
          "adminNotes": {
            "type": "string",
            "minLength": 1,
            "description": "Administrative notes hidden from the public view."
          },
          "externalId": {
            "type": "string",
            "minLength": 1,
            "description": "External identifier used to link the exhibitor upstream."
          },
          "autoLoginUrl": {
            "type": "string",
            "minLength": 1,
            "description": "Auto-login URL for the exhibitor portal."
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "Category identifier returned by ExpoFP."
                },
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "description": "Category name returned by ExpoFP."
                }
              },
              "additionalProperties": false,
              "description": "One ExpoFP category resource."
            },
            "description": "Categories assigned to the exhibitor."
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "description": "Tags assigned to the exhibitor."
          },
          "metadata": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "key": {
                  "type": "string",
                  "minLength": 1,
                  "description": "Metadata key visible only through the ExpoFP API."
                },
                "value": {
                  "type": "string",
                  "minLength": 1,
                  "description": "Metadata value visible only through the ExpoFP API."
                }
              },
              "additionalProperties": false,
              "description": "One ExpoFP metadata key-value pair."
            },
            "description": "Metadata key-value pairs visible only via API."
          }
        },
        "additionalProperties": false,
        "required": [
          "eventId"
        ],
        "description": "Action input."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "minimum": 1,
            "description": "Exhibitor identifier created by ExpoFP."
          }
        },
        "additionalProperties": false,
        "required": [
          "id"
        ],
        "description": "The response returned when creating an ExpoFP exhibitor."
      }
    },
    {
      "id": "expofp.delete_exhibitor",
      "service": "expofp",
      "name": "delete_exhibitor",
      "description": "Delete an ExpoFP exhibitor by exhibitor ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "minimum": 1,
            "description": "Exhibitor identifier that should be deleted."
          }
        },
        "additionalProperties": false,
        "required": [
          "id"
        ],
        "description": "Action input."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Whether ExpoFP accepted the exhibitor deletion."
          }
        },
        "additionalProperties": false,
        "required": [
          "success"
        ],
        "description": "The response returned when deleting an ExpoFP exhibitor."
      }
    },
    {
      "id": "expofp.get_exhibitor",
      "service": "expofp",
      "name": "get_exhibitor",
      "description": "Get one ExpoFP exhibitor by exhibitor ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "minimum": 1,
            "description": "Exhibitor identifier returned by ExpoFP."
          }
        },
        "additionalProperties": false,
        "required": [
          "id"
        ],
        "description": "Action input."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "exhibitor": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "Exhibitor name."
              },
              "description": {
                "type": "string",
                "minLength": 1,
                "description": "Sanitized HTML description with the tags allowed by ExpoFP."
              },
              "featured": {
                "type": "boolean",
                "description": "Whether the exhibitor is featured."
              },
              "advertised": {
                "type": "boolean",
                "description": "Whether the exhibitor logo is advertised in the header."
              },
              "country": {
                "type": "string",
                "minLength": 1,
                "description": "Country."
              },
              "address": {
                "type": "string",
                "minLength": 1,
                "description": "Address line 1."
              },
              "address2": {
                "type": "string",
                "minLength": 1,
                "description": "Address line 2."
              },
              "city": {
                "type": "string",
                "minLength": 1,
                "description": "City."
              },
              "state": {
                "type": "string",
                "minLength": 1,
                "description": "State or province."
              },
              "zip": {
                "type": "string",
                "minLength": 1,
                "description": "ZIP or postal code."
              },
              "phone1": {
                "type": "string",
                "minLength": 1,
                "description": "Primary phone number."
              },
              "phone2": {
                "type": "string",
                "minLength": 1,
                "description": "Secondary phone number."
              },
              "publicEmail": {
                "type": "string",
                "minLength": 1,
                "description": "Public email address."
              },
              "privateEmail": {
                "type": "string",
                "minLength": 1,
                "description": "Private email address."
              },
              "vatNumber": {
                "type": "string",
                "minLength": 1,
                "description": "VAT number."
              },
              "website": {
                "type": "string",
                "minLength": 1,
                "description": "Website URL."
              },
              "facebook": {
                "type": "string",
                "minLength": 1,
                "description": "Facebook URL."
              },
              "instagram": {
                "type": "string",
                "minLength": 1,
                "description": "Instagram URL."
              },
              "linkedin": {
                "type": "string",
                "minLength": 1,
                "description": "LinkedIn URL."
              },
              "twitter": {
                "type": "string",
                "minLength": 1,
                "description": "Twitter or X URL."
              },
              "googlePlus": {
                "type": "string",
                "minLength": 1,
                "description": "Google+ URL."
              },
              "xing": {
                "type": "string",
                "minLength": 1,
                "description": "Xing URL."
              },
              "youtube": {
                "type": "string",
                "minLength": 1,
                "description": "YouTube URL."
              },
              "videoUrl": {
                "type": "string",
                "minLength": 1,
                "description": "Video URL."
              },
              "contactName": {
                "type": "string",
                "minLength": 1,
                "description": "Contact person name."
              },
              "contactPhone": {
                "type": "string",
                "minLength": 1,
                "description": "Contact person phone number."
              },
              "adminNotes": {
                "type": "string",
                "minLength": 1,
                "description": "Administrative notes hidden from the public view."
              },
              "externalId": {
                "type": "string",
                "minLength": 1,
                "description": "External identifier used to link the exhibitor upstream."
              },
              "autoLoginUrl": {
                "type": "string",
                "minLength": 1,
                "description": "Auto-login URL for the exhibitor portal."
              },
              "categories": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "integer",
                      "minimum": 1,
                      "description": "Category identifier returned by ExpoFP."
                    },
                    "name": {
                      "type": "string",
                      "minLength": 1,
                      "description": "Category name returned by ExpoFP."
                    }
                  },
                  "additionalProperties": false,
                  "description": "One ExpoFP category resource."
                },
                "description": "Categories assigned to the exhibitor."
              },
              "tags": {
                "type": "array",
                "items": {
                  "type": "string",
                  "minLength": 1
                },
                "description": "Tags assigned to the exhibitor."
              },
              "metadata": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "key": {
                      "type": "string",
                      "minLength": 1,
                      "description": "Metadata key visible only through the ExpoFP API."
                    },
                    "value": {
                      "type": "string",
                      "minLength": 1,
                      "description": "Metadata value visible only through the ExpoFP API."
                    }
                  },
                  "additionalProperties": false,
                  "description": "One ExpoFP metadata key-value pair."
                },
                "description": "Metadata key-value pairs visible only via API."
              },
              "id": {
                "type": "integer",
                "minimum": 1,
                "description": "Exhibitor identifier returned by ExpoFP."
              },
              "booths": {
                "type": "array",
                "items": {
                  "type": "string",
                  "minLength": 1
                },
                "description": "Booth names assigned to the exhibitor."
              },
              "images": {
                "type": "array",
                "items": {
                  "type": "string",
                  "minLength": 1
                },
                "description": "Gallery image identifiers assigned to the exhibitor."
              },
              "logoFileUrl": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "Logo image URL."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "updatedAt": {
                "type": "string",
                "minLength": 1,
                "description": "Last updated timestamp in ISO8601 format."
              }
            },
            "additionalProperties": false,
            "required": [
              "id",
              "booths",
              "images"
            ],
            "description": "Full exhibitor record returned by ExpoFP."
          }
        },
        "additionalProperties": false,
        "required": [
          "exhibitor"
        ],
        "description": "The response returned when fetching one ExpoFP exhibitor."
      }
    },
    {
      "id": "expofp.get_exhibitor_id",
      "service": "expofp",
      "name": "get_exhibitor_id",
      "description": "Resolve an ExpoFP exhibitor ID from expo ID and exhibitor external ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "eventId": {
            "type": "integer",
            "minimum": 1,
            "description": "Expo identifier that owns the exhibitor."
          },
          "externalId": {
            "type": "string",
            "minLength": 1,
            "description": "External identifier configured on the exhibitor."
          }
        },
        "additionalProperties": false,
        "required": [
          "eventId",
          "externalId"
        ],
        "description": "Action input."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "minimum": 1,
            "description": "Exhibitor identifier returned by ExpoFP."
          }
        },
        "additionalProperties": false,
        "required": [
          "id"
        ],
        "description": "The response returned when resolving an ExpoFP exhibitor ID."
      }
    },
    {
      "id": "expofp.list_exhibitors",
      "service": "expofp",
      "name": "list_exhibitors",
      "description": "List all exhibitors in one ExpoFP expo.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "eventId": {
            "type": "integer",
            "minimum": 1,
            "description": "Expo identifier whose exhibitors should be listed."
          }
        },
        "additionalProperties": false,
        "required": [
          "eventId"
        ],
        "description": "Action input."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "exhibitors": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "Exhibitor identifier returned by ExpoFP."
                },
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "description": "Exhibitor name returned by ExpoFP."
                },
                "booths": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1
                  },
                  "description": "Booth names assigned to the exhibitor."
                },
                "categories": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1
                  },
                  "description": "Category names assigned to the exhibitor."
                },
                "tags": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1
                  },
                  "description": "String tags assigned to the exhibitor."
                },
                "extras": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1
                  },
                  "description": "Extra names assigned to the exhibitor."
                }
              },
              "additionalProperties": false,
              "description": "Compact exhibitor listing item returned by ExpoFP."
            },
            "description": "Exhibitors returned by ExpoFP."
          }
        },
        "additionalProperties": false,
        "required": [
          "exhibitors"
        ],
        "description": "The response returned when listing ExpoFP exhibitors."
      }
    },
    {
      "id": "expofp.list_expos",
      "service": "expofp",
      "name": "list_expos",
      "description": "List all expos accessible to the current ExpoFP API token.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "Action input."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "expos": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "Expo identifier returned by ExpoFP."
                },
                "key": {
                  "type": "string",
                  "minLength": 1,
                  "description": "Unique Expo key returned by ExpoFP."
                },
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "description": "Expo name returned by ExpoFP."
                }
              },
              "additionalProperties": false,
              "description": "One Expo returned by ExpoFP."
            },
            "description": "Expos returned by ExpoFP."
          }
        },
        "additionalProperties": false,
        "required": [
          "expos"
        ],
        "description": "The response returned when listing ExpoFP expos."
      }
    },
    {
      "id": "expofp.update_exhibitor",
      "service": "expofp",
      "name": "update_exhibitor",
      "description": "Partially update an ExpoFP exhibitor by exhibitor ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "minimum": 1,
            "description": "Exhibitor identifier that should be updated."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "Exhibitor name."
          },
          "description": {
            "type": "string",
            "minLength": 1,
            "description": "Sanitized HTML description with the tags allowed by ExpoFP."
          },
          "featured": {
            "type": "boolean",
            "description": "Whether the exhibitor is featured."
          },
          "advertised": {
            "type": "boolean",
            "description": "Whether the exhibitor logo is advertised in the header."
          },
          "country": {
            "type": "string",
            "minLength": 1,
            "description": "Country."
          },
          "address": {
            "type": "string",
            "minLength": 1,
            "description": "Address line 1."
          },
          "address2": {
            "type": "string",
            "minLength": 1,
            "description": "Address line 2."
          },
          "city": {
            "type": "string",
            "minLength": 1,
            "description": "City."
          },
          "state": {
            "type": "string",
            "minLength": 1,
            "description": "State or province."
          },
          "zip": {
            "type": "string",
            "minLength": 1,
            "description": "ZIP or postal code."
          },
          "phone1": {
            "type": "string",
            "minLength": 1,
            "description": "Primary phone number."
          },
          "phone2": {
            "type": "string",
            "minLength": 1,
            "description": "Secondary phone number."
          },
          "publicEmail": {
            "type": "string",
            "minLength": 1,
            "description": "Public email address."
          },
          "privateEmail": {
            "type": "string",
            "minLength": 1,
            "description": "Private email address."
          },
          "vatNumber": {
            "type": "string",
            "minLength": 1,
            "description": "VAT number."
          },
          "website": {
            "type": "string",
            "minLength": 1,
            "description": "Website URL."
          },
          "facebook": {
            "type": "string",
            "minLength": 1,
            "description": "Facebook URL."
          },
          "instagram": {
            "type": "string",
            "minLength": 1,
            "description": "Instagram URL."
          },
          "linkedin": {
            "type": "string",
            "minLength": 1,
            "description": "LinkedIn URL."
          },
          "twitter": {
            "type": "string",
            "minLength": 1,
            "description": "Twitter or X URL."
          },
          "googlePlus": {
            "type": "string",
            "minLength": 1,
            "description": "Google+ URL."
          },
          "xing": {
            "type": "string",
            "minLength": 1,
            "description": "Xing URL."
          },
          "youtube": {
            "type": "string",
            "minLength": 1,
            "description": "YouTube URL."
          },
          "videoUrl": {
            "type": "string",
            "minLength": 1,
            "description": "Video URL."
          },
          "contactName": {
            "type": "string",
            "minLength": 1,
            "description": "Contact person name."
          },
          "contactPhone": {
            "type": "string",
            "minLength": 1,
            "description": "Contact person phone number."
          },
          "adminNotes": {
            "type": "string",
            "minLength": 1,
            "description": "Administrative notes hidden from the public view."
          },
          "externalId": {
            "type": "string",
            "minLength": 1,
            "description": "External identifier used to link the exhibitor upstream."
          },
          "autoLoginUrl": {
            "type": "string",
            "minLength": 1,
            "description": "Auto-login URL for the exhibitor portal."
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "Category identifier returned by ExpoFP."
                },
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "description": "Category name returned by ExpoFP."
                }
              },
              "additionalProperties": false,
              "description": "One ExpoFP category resource."
            },
            "description": "Categories assigned to the exhibitor."
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "description": "Tags assigned to the exhibitor."
          },
          "metadata": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "key": {
                  "type": "string",
                  "minLength": 1,
                  "description": "Metadata key visible only through the ExpoFP API."
                },
                "value": {
                  "type": "string",
                  "minLength": 1,
                  "description": "Metadata value visible only through the ExpoFP API."
                }
              },
              "additionalProperties": false,
              "description": "One ExpoFP metadata key-value pair."
            },
            "description": "Metadata key-value pairs visible only via API."
          }
        },
        "additionalProperties": false,
        "required": [
          "id"
        ],
        "description": "Action input."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Whether ExpoFP accepted the exhibitor update."
          }
        },
        "additionalProperties": false,
        "required": [
          "success"
        ],
        "description": "The response returned when updating an ExpoFP exhibitor."
      }
    }
  ]
}
