API Documentation

Complete REST API Reference for Erie Wedding Officiants Platform

Get Started

🚀 Getting Started

Base URL: /api

Content Type: application/json

Rate Limiting: 1000 requests per 15 minutes per IP

File Upload Limit: 2MB for profiles, 50MB for chat files

GET /health

Returns: API health status

🔐 Authentication

Include JWT token in Authorization header for protected routes:

Authorization: Bearer YOUR_JWT_TOKEN

Token Expiry: Access tokens expire after 24 hours.

👤 Users API

Register User

POST /users/register
{
  "email": "user@example.com",
  "password": "SecurePass123",
  "role": "user | officiant",
  "partner_1": "John Doe",
  "partner_2": "Jane Smith",
  "name": "Rev. Smith"
}

Login

POST /users/login
{
  "email": "user@example.com",
  "password": "SecurePass123"
}

Get Current User

GET /users/get-user 🔒 Auth Required

Get All Officiants

GET /users/officiants

Public endpoint - returns verified officiants

Update Profile

PATCH /users/update 🔒 Auth Required File Upload

Form Data: profilePicture (File) + user fields

Change Password

PATCH /users/change-password 🔒 Auth Required
{
  "currentPassword": "OldPass123",
  "newPassword": "NewPass456"
}

📅 Events/Ceremonies API

Create Event

POST /events/create 🔒 Auth Required
{
  "title": "John & Jane Wedding",
  "userId": "user_id",
  "officiantId": "officiant_id",
  "eventDate": "2024-12-31",
  "eventTime": "15:00",
  "location": "Central Park",
  "status": "planned | submitted | approved",
  "groomName": "John Doe",
  "brideName": "Jane Smith"
}

Get Events by Role

GET /events/by-role/:id/:role 🔒 Auth Required

Update Event

PATCH /events/update/:id 🔒 Auth Required

Delete Event

DELETE /events/delete/:id 🔒 Auth Required

📄 Agreements API

Create Agreement

POST /agreements/create 🔒 Auth Required
{
  "userId": "user_id",
  "officiantId": "officiant_id",
  "price": 500,
  "travelFee": 50,
  "ceremonyDate": "2024-12-31",
  "ceremonyLocation": "Central Park"
}

Get Agreement by User

GET /agreements/user/:userId 🔒 Auth Required

Upload Signatures

POST /agreements/upload-user-signatures/:agreementId 🔒 Auth Required Multipart Form

Mark Payment Completed

PATCH /agreements/payment-completed/:agreementId 🔒 Auth Required

📊 Agreement Status Flow:

pending → officiant_filled → user_signed → 
payment_requested → payment_completed → 
officiant_signed → used

💬 Chat API

Get Messages

GET /chat/messages/:roomId

Query: ?page=1&limit=50

Send Message

POST /chat/messages
{
  "roomId": "private_userId_officiantId",
  "sender": "user_id",
  "senderName": "John Doe",
  "type": "text | image | file",
  "content": "Message text..."
}

Upload File

POST /chat/upload-chat-file Multipart Form

Max 50MB per file

🔌 WebSocket Events:

Client → Server:
  - joinRoom
  - sendMessage
  - typing

Server → Client:
  - receiveMessage
  - userTyping

🗓️ Schedule API

Create Schedule

POST /schedule/create 🔒 Auth Required

Get Schedules

GET /schedule/get/:userId 🔒 Auth Required

⭐ Reviews API

Create Review

POST /reviews/create 🔒 Auth Required
{
  "officiantId": "officiant_id",
  "rating": 5,
  "comment": "Excellent service!",
  "isPublic": true
}

Get Public Reviews

GET /reviews/public

No auth required

🎉 Start Building!

Create amazing wedding experiences with our API

Visit Application →

Made with ❤️ by Erie Wedding Officiants Team
© 2025 All Rights Reserved