> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tktchurch.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Event Details

> Get detailed information about a specific event

## Path Parameters

<ParamField path="id" type="string" required>
  The unique identifier (UUID) of the event
</ParamField>

## Response

<ResponseField name="id" type="string">
  Unique identifier for the event (UUID)
</ResponseField>

<ResponseField name="title" type="string">
  Event title
</ResponseField>

<ResponseField name="description" type="string">
  Event description
</ResponseField>

<ResponseField name="startDate" type="string">
  Event start date and time (ISO 8601)
</ResponseField>

<ResponseField name="endDate" type="string">
  Event end date and time (ISO 8601)
</ResponseField>

<ResponseField name="timezone" type="string">
  Event timezone
</ResponseField>

<ResponseField name="location" type="object">
  Event location details

  <Expandable title="Location Object">
    <ResponseField name="name" type="string">
      Location name
    </ResponseField>

    <ResponseField name="address" type="string">
      Street address
    </ResponseField>

    <ResponseField name="city" type="string">
      City
    </ResponseField>

    <ResponseField name="state" type="string">
      State/Province
    </ResponseField>

    <ResponseField name="country" type="string">
      Country
    </ResponseField>

    <ResponseField name="postalCode" type="string">
      Postal code
    </ResponseField>

    <ResponseField name="coordinates" type="object">
      <ResponseField name="latitude" type="number">
        Location latitude
      </ResponseField>

      <ResponseField name="longitude" type="number">
        Location longitude
      </ResponseField>
    </ResponseField>

    <ResponseField name="virtualMeetingUrl" type="string">
      URL for virtual meetings (if applicable)
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="type" type="string">
  Event type (service, meeting, concert, workshop, conference, social, other)
</ResponseField>

<ResponseField name="status" type="string">
  Event status (scheduled, cancelled, postponed, rescheduled)
</ResponseField>

<ResponseField name="recurrence" type="object">
  Event recurrence details (if recurring)

  <Expandable title="Recurrence Object">
    <ResponseField name="frequency" type="string">
      Recurrence frequency (daily, weekly, monthly, yearly)
    </ResponseField>

    <ResponseField name="interval" type="integer">
      Interval between occurrences
    </ResponseField>

    <ResponseField name="until" type="string">
      End date for recurrence (ISO 8601)
    </ResponseField>

    <ResponseField name="count" type="integer">
      Number of occurrences
    </ResponseField>

    <ResponseField name="byDay" type="array">
      Days of week (SU, MO, TU, WE, TH, FR, SA)
    </ResponseField>

    <ResponseField name="byMonth" type="array">
      Months (1-12)
    </ResponseField>

    <ResponseField name="byMonthDay" type="array">
      Days of month
    </ResponseField>

    <ResponseField name="excludeDates" type="array">
      Excluded dates (ISO 8601)
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="reminders" type="array">
  Event reminders

  <Expandable title="Reminder Object">
    <ResponseField name="type" type="string">
      Reminder type (email, notification, sms)
    </ResponseField>

    <ResponseField name="minutes" type="integer">
      Minutes before event
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="attachments" type="array">
  Event attachments

  <Expandable title="Attachment Object">
    <ResponseField name="name" type="string">
      Attachment name
    </ResponseField>

    <ResponseField name="url" type="string">
      Attachment URL
    </ResponseField>

    <ResponseField name="type" type="string">
      File type
    </ResponseField>

    <ResponseField name="size" type="integer">
      File size in bytes
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="calendarLinks" type="object">
  Calendar integration links

  <Expandable title="Calendar Links">
    <ResponseField name="google" type="string">
      Google Calendar link
    </ResponseField>

    <ResponseField name="apple" type="string">
      Apple Calendar link
    </ResponseField>

    <ResponseField name="outlook" type="string">
      Outlook Calendar link
    </ResponseField>

    <ResponseField name="yahoo" type="string">
      Yahoo Calendar link
    </ResponseField>

    <ResponseField name="ics" type="string">
      ICS file link
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="tags" type="array">
  Event tags
</ResponseField>

<ResponseField name="maxCapacity" type="integer">
  Maximum number of attendees (if applicable)
</ResponseField>

<ResponseField name="requiresGeolocation" type="boolean">
  Whether geolocation is required for attendance
</ResponseField>

<ResponseField name="geofenceRadius" type="number">
  Geofence radius in meters (if applicable)
</ResponseField>

<ResponseField name="createdByUserId" type="string">
  ID of user who created the event
</ResponseField>

<ResponseField name="updatedByUserId" type="string">
  ID of user who last updated the event
</ResponseField>

<ResponseField name="createdAt" type="string">
  Creation timestamp (ISO 8601)
</ResponseField>

<ResponseField name="updatedAt" type="string">
  Last update timestamp (ISO 8601)
</ResponseField>

<ResponseField name="thumbnail" type="object">
  Event thumbnail image

  <Expandable title="Thumbnail Object">
    <ResponseField name="id" type="string">
      Thumbnail file ID
    </ResponseField>

    <ResponseField name="url" type="string">
      Thumbnail URL
    </ResponseField>

    <ResponseField name="provider" type="string">
      Storage provider
    </ResponseField>

    <ResponseField name="key" type="string">
      Storage key
    </ResponseField>
  </Expandable>
</ResponseField>

## Error Responses

<ResponseField name="error" type="object">
  Error details when the request fails

  <Expandable title="Error Object">
    <ResponseField name="status" type="integer">
      HTTP status code
    </ResponseField>

    <ResponseField name="reason" type="string">
      Error message explaining why the request failed
    </ResponseField>
  </Expandable>
</ResponseField>

<Note>
  Common error cases:

  * 404 Not Found: Event with the specified ID does not exist
</Note>

<RequestExample>
  ```bash cURL theme={null}
  curl -X GET "https://api.tktchurch.com/v1/events/123e4567-e89b-12d3-a456-426614174000" \
    -H "Accept: application/json"
  ```

  ```javascript JavaScript theme={null}
  const getEvent = async (eventId) => {
    const response = await fetch(
      `https://api.tktchurch.com/v1/events/${eventId}`,
      {
        method: 'GET',
        headers: {
          'Accept': 'application/json'
        }
      }
    );

    if (!response.ok) {
      throw new Error('Failed to fetch event');
    }

    return response.json();
  };

  // Usage
  try {
    const event = await getEvent('123e4567-e89b-12d3-a456-426614174000');
    console.log('Event:', event);
  } catch (error) {
    console.error('Error:', error);
  }
  ```

  ```swift Swift theme={null}
  func getEvent(id: UUID) async throws -> Event {
      let urlRequest = URLRequest(url: URL(string: "https://api.tktchurch.com/v1/events/\(id)")!)
      
      let (data, response) = try await URLSession.shared.data(for: urlRequest)
      guard let httpResponse = response as? HTTPURLResponse else {
          throw URLError(.badServerResponse)
      }
      
      if httpResponse.statusCode == 404 {
          throw URLError(.resourceNotFound)
      }
      
      return try JSONDecoder().decode(Event.self, from: data)
  }

  // Usage
  do {
      let event = try await getEvent(id: UUID(uuidString: "123e4567-e89b-12d3-a456-426614174000")!)
      print("Event:", event)
  } catch {
      print("Error:", error)
  }
  ```

  ```kotlin Kotlin theme={null}
  suspend fun getEvent(eventId: String): Event {
      val client = OkHttpClient()
      
      val request = Request.Builder()
          .url("https://api.tktchurch.com/v1/events/$eventId")
          .get()
          .build()
      
      client.newCall(request).execute().use { response ->
          if (!response.isSuccessful) {
              throw IOException("Unexpected response ${response.code}")
          }
          
          return Json.decodeFromString(response.body?.string() ?: "")
      }
  }

  // Usage
  try {
      val event = getEvent("123e4567-e89b-12d3-a456-426614174000")
      println("Event: $event")
  } catch (e: Exception) {
      println("Error: ${e.message}")
  }
  ```

  ```typescript React Native theme={null}
  import axios from 'axios';

  const getEvent = async (eventId: string): Promise<Event> => {
    try {
      const response = await axios.get(
        `https://api.tktchurch.com/v1/events/${eventId}`
      );
      return response.data;
    } catch (error) {
      if (axios.isAxiosError(error)) {
        if (error.response?.status === 404) {
          throw new Error('Event not found');
        }
        throw new Error(error.response?.data?.message || 'Failed to fetch event');
      }
      throw error;
    }
  };

  // Usage
  try {
    const event = await getEvent('123e4567-e89b-12d3-a456-426614174000');
    console.log('Event:', event);
  } catch (error) {
    console.error('Error:', error);
  }
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
  {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "title": "Sunday Worship Service",
    "description": "Weekly Sunday worship service",
    "startDate": "2024-01-07T10:00:00Z",
    "endDate": "2024-01-07T12:00:00Z",
    "timezone": "America/New_York",
    "location": {
      "name": "Main Sanctuary",
      "address": "123 Church Street",
      "city": "New York",
      "state": "NY",
      "country": "USA",
      "postalCode": "10001",
      "coordinates": {
        "latitude": 40.7128,
        "longitude": -74.0060
      }
    },
    "type": "service",
    "status": "scheduled",
    "recurrence": {
      "frequency": "weekly",
      "interval": 1,
      "byDay": ["SU"]
    },
    "reminders": [
      {
        "type": "email",
        "minutes": 1440
      },
      {
        "type": "notification",
        "minutes": 60
      }
    ],
    "calendarLinks": {
      "google": "https://calendar.google.com/...",
      "apple": "webcal://...",
      "outlook": "https://outlook.office.com/...",
      "yahoo": "https://calendar.yahoo.com/...",
      "ics": "https://api.tktchurch.com/v1/events/123/calendar.ics"
    },
    "tags": ["worship", "sunday-service"],
    "maxCapacity": 500,
    "requiresGeolocation": true,
    "geofenceRadius": 100,
    "createdByUserId": "456e7890-f12g-34h5-i678-912345678901",
    "updatedByUserId": "456e7890-f12g-34h5-i678-912345678901",
    "createdAt": "2024-01-01T00:00:00Z",
    "updatedAt": "2024-01-01T00:00:00Z",
    "thumbnail": {
      "id": "789e0123-j45k-67l8-m901-234567890123",
      "url": "https://storage.tktchurch.com/thumbnails/event-123.jpg",
      "provider": "s3",
      "key": "thumbnails/event-123.jpg"
    }
  }
  ```

  ```json 404 Not Found theme={null}
  {
    "error": {
      "status": 404,
      "reason": "Event not found"
    }
  }
  ```
</ResponseExample>
