{
  "openapi": "3.1.0",
  "info": {
    "title": "YourEventKit tool submissions",
    "version": "1.0.0",
    "description": "Submit your own tool for review. The maximum JSON body size is 32768 bytes (32 KiB). Create a new UUID v4 for each submission. If you send the same submission again, use the same ID and data. We keep contact information private. The API cannot add tools to the directory or give the review status."
  },
  "servers": [
    {
      "url": "https://youreventkit.com"
    }
  ],
  "security": [],
  "externalDocs": {
    "description": "Agent instructions",
    "url": "https://youreventkit.com/submit-tool/agent"
  },
  "paths": {
    "/api/tool-submissions": {
      "post": {
        "operationId": "submitToolForReview",
        "summary": "Submit your own tool for review",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "submissionId",
                  "name",
                  "email",
                  "toolName",
                  "toolUrl",
                  "description",
                  "eventUse",
                  "category",
                  "pricing"
                ],
                "properties": {
                  "submissionId": {
                    "title": "Submission ID",
                    "description": "Create a UUID v4. Use the same ID and data when you send the request again.",
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 36,
                    "format": "uuid",
                    "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$"
                  },
                  "name": {
                    "title": "Contact name",
                    "description": "Enter the name of a person who can give us information about the tool.",
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 120
                  },
                  "email": {
                    "title": "Contact email",
                    "description": "We use this email address only for questions about your submission.",
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 254,
                    "format": "email"
                  },
                  "toolName": {
                    "title": "Tool name",
                    "description": "Enter the tool name from its official website.",
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 120
                  },
                  "toolUrl": {
                    "title": "Tool website",
                    "description": "Enter the official website URL. Include https://.",
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 2048,
                    "format": "uri"
                  },
                  "description": {
                    "title": "Tool description",
                    "description": "Tell us what the tool does. Use clear words.",
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 1500
                  },
                  "eventUse": {
                    "title": "Use for event teams",
                    "description": "Tell us how event teams can use the tool. For example, the tool can have features for ticket sales or attendee registration.",
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 1500
                  },
                  "category": {
                    "title": "Tool category",
                    "description": "Select one category for your tool. We examine the category during the review.",
                    "type": "string",
                    "minLength": 1,
                    "enum": [
                      "Abstract & Paper Management",
                      "AI",
                      "Analytics & Insights",
                      "Audience Response & Polling",
                      "Digital Invitations",
                      "Event Marketing",
                      "Event Planning & Management",
                      "Fundraising & Auction",
                      "Lead Retrieval",
                      "Mobile Event Apps",
                      "Networking & Engagement",
                      "Registration & Ticketing",
                      "Sustainability",
                      "Venue & Catering",
                      "Virtual & Hybrid Events"
                    ]
                  },
                  "pricing": {
                    "title": "Pricing type",
                    "description": "Free: no charge. Freemium: free and paid plans. Paid: payment required.",
                    "type": "string",
                    "minLength": 1,
                    "enum": [
                      "Free",
                      "Freemium",
                      "Paid"
                    ]
                  },
                  "pricingUrl": {
                    "title": "Pricing page",
                    "description": "Optional. Enter a URL for current prices or sales information.",
                    "type": "string",
                    "maxLength": 2048,
                    "format": "uri"
                  },
                  "logoUrl": {
                    "title": "Logo URL",
                    "description": "Optional. Enter a URL for the tool logo or a page with brand images.",
                    "type": "string",
                    "maxLength": 2048,
                    "format": "uri"
                  },
                  "sources": {
                    "title": "Source URLs",
                    "description": "Optional. Enter URLs for official feature pages or documents. Use one URL on each line. Use a maximum of 8 URLs.",
                    "type": "array",
                    "maxItems": 8,
                    "items": {
                      "type": "string",
                      "format": "uri",
                      "maxLength": 2048
                    }
                  },
                  "notes": {
                    "title": "Notes",
                    "description": "Optional. Add information that can help us examine the tool.",
                    "type": "string",
                    "maxLength": 2000
                  }
                }
              },
              "example": {
                "submissionId": "f60c93af-903d-4acb-84ce-21b47c59e15d",
                "name": "Alex Example",
                "email": "alex@example.com",
                "toolName": "Example Events",
                "toolUrl": "https://example.com",
                "description": "Registration software for workshops.",
                "eventUse": "Event teams can use the tool for attendee registration and check-in.",
                "category": "Registration & Ticketing",
                "pricing": "Freemium",
                "pricingUrl": "https://example.com/pricing",
                "sources": [
                  "https://example.com/features"
                ]
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "We received your tool information for review. Read status and submissionId. We did not add your tool to the directory.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "submissionId",
                    "message"
                  ],
                  "properties": {
                    "status": {
                      "type": "string",
                      "const": "pending_review"
                    },
                    "submissionId": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "status": "pending_review",
                  "submissionId": "f60c93af-903d-4acb-84ce-21b47c59e15d",
                  "message": "We received your tool information for review. We did not add your tool to the directory."
                }
              }
            }
          },
          "400": {
            "description": "The JSON or field data has errors. Read fields for field errors. Correct the request.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "submissionId": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "fields": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          },
          "405": {
            "description": "Use the POST method.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "submissionId": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "fields": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "The submission ID has different data. Send the first request again to get its receipt.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "submissionId": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "fields": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          },
          "413": {
            "description": "Send a request with a maximum size of 32 KiB.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "submissionId": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "fields": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          },
          "415": {
            "description": "Set Content-Type to application/json.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "submissionId": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "fields": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "We do not know if we received your submission. Send the same ID and data again.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "submissionId": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "fields": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "The service is not available. Keep the prepared request.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "submissionId": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "fields": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          },
          "504": {
            "description": "The time limit expired. We do not know if we received your submission. Send the same ID and data again.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "submissionId": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "fields": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}