Skip to main content
For general webhook concepts like bubble-up behavior, payload visibility rules, and versioned snapshots, see Webhook Concepts.

Description

This event is triggered when a proctoring center is updated — for example, when its schedule, contact information, or associated rooms change.

Integration Details

  • Subscription Key: pm.center.updated
  • Use Case: Sync center availability with external calendars or update proctoring resource allocations.
  • Related Events: pm.center.created

Trigger

  • Event Type: pm_center_updated
  • Source: Update of a record in the pm.center table.

Cross-Service References

This is one of the richest cross-service payloads in the system:
  • Workflow Tools (wft.workflow): Workflow definition with steps.
  • Scheduler (sch.drive_schedule): Drive schedules with rooms and room seats, filtered to CENTER_PLAN type and this center.
  • Geo-location: Physical address and coordinates.
  • Schedule: Operating hours (weekly availabilities) and holiday overrides.

Payload Example

{
  "id": 401,
  "name": "Bangalore Test Center",
  "center_type": "physical",
  "status": "active",
  "external_id": "ext_center_401",
  "timezone": "Asia/Kolkata",
  "contact_name": "Priya Sharma",
  "contact_email": "admin@testcenter.com",
  "contact_phone": "+919876543210",
  "exam_types": ["online", "offline"],
  "schedule_id": 60,
  "workflow_id": 100,
  "geo_location_id": 50,
  "created_at": "2024-03-01T08:00:00Z",
  "created_by": 1,
  "updated_at": "2024-03-05T10:00:00Z",
  "updated_by": 1,
  "geo_location": {
    "id": 50,
    "address": "100 MG Road, Indiranagar",
    "city_name": "Bangalore",
    "country_code": "IN",
    "postal_code": "560038",
    "latitude": 12.9716,
    "longitude": 77.5946,
    "google_map_link": "https://maps.google.com/?q=12.9716,77.5946"
  },
  "schedule": {
    "id": 60,
    "name": "Standard Business Hours",
    "schedule_type": "weekly",
    "timezone": "Asia/Kolkata",
    "external_id": null,
    "schedule_availabilities": [
      {
        "id": 1,
        "week_day": "monday",
        "from": "09:00:00",
        "to": "17:00:00",
        "sort_key": 1,
        "external_id": null
      },
      {
        "id": 2,
        "week_day": "tuesday",
        "from": "09:00:00",
        "to": "17:00:00",
        "sort_key": 2,
        "external_id": null
      },
      {
        "id": 3,
        "week_day": "wednesday",
        "from": "09:00:00",
        "to": "17:00:00",
        "sort_key": 3,
        "external_id": null
      }
    ],
    "schedule_overrides": [
      {
        "id": 1,
        "from_date": "2024-03-25",
        "to_date": "2024-03-25",
        "is_holiday": true,
        "reason": "Holi",
        "external_id": null
      }
    ]
  },
  "workflow": {
    "id": 100,
    "title": "Technical Hiring Pipeline",
    "workflow_type": "hiring",
    "status": "active",
    "external_id": "ext_wf_100",
    "steps": [
      {
        "id": 1,
        "name": "Online Assessment",
        "step_type": "assessment",
        "sequence": 1,
        "is_proctoring": true,
        "external_id": null,
        "drive_schedules": [
          {
            "id": 201,
            "name": "March 2024 - Bangalore",
            "drive_type": "CENTER_PLAN",
            "status": "active",
            "start_date": "2024-03-15",
            "end_date": "2024-03-15",
            "booking_start_date": "2024-03-01",
            "booking_end_date": "2024-03-14",
            "location": {
              "city": "Bangalore",
              "country": "India"
            },
            "timezone": "Asia/Kolkata",
            "cron_expression": null,
            "external_id": null,
            "rooms": [
              {
                "id": 301,
                "external_id": null,
                "guest_capacity": 40,
                "status": "active",
                "workflow_step_id": 1,
                "room_seats": [
                  {
                    "id": 1,
                    "external_id": "seat-01",
                    "status": "available"
                  }
                ]
              }
            ]
          }
        ]
      }
    ]
  }
}

Payload Type Showcase

{
  id: number;
  name: string;
  center_type: string;
  status: string;
  external_id: string | null;
  timezone: string;
  contact_name: string | null;
  contact_email: string | null;
  contact_phone: string | null;
  exam_types: string[];
  schedule_id: number | null;
  workflow_id: number | null;
  geo_location_id: number | null;
  created_at: string;
  created_by: number;
  updated_at: string;
  updated_by: number;
  geo_location: {
    id: number;
    address: string | null;
    city_name: string | null;
    country_code: string | null;
    postal_code: string | null;
    latitude: number | null;
    longitude: number | null;
    google_map_link: string | null;
  } | null;
  schedule: {
    id: number;
    name: string;
    schedule_type: string;
    timezone: string;
    external_id: string | null;
    schedule_availabilities: {
      id: number;
      week_day: string;
      from: string;
      to: string;
      sort_key: number;
      external_id: string | null;
    }[];
    schedule_overrides: {
      id: number;
      from_date: string;
      to_date: string;
      is_holiday: boolean;
      reason: string | null;
      external_id: string | null;
    }[];
  } | null;
  workflow: {
    id: number;
    title: string;
    workflow_type: string;
    status: string;
    external_id: string | null;
    steps: {
      id: number;
      name: string;
      step_type: string;
      sequence: number;
      is_proctoring: boolean;
      external_id: string | null;
      drive_schedules: {
        id: number;
        name: string;
        drive_type: string;
        status: string;
        start_date: string | null;
        end_date: string | null;
        booking_start_date: string | null;
        booking_end_date: string | null;
        location: Record<string, any> | null;
        timezone: string | null;
        cron_expression: string | null;
        external_id: string | null;
        rooms: {
          id: number;
          external_id: string | null;
          guest_capacity: number;
          status: string;
          workflow_step_id: number;
          room_seats: {
            id: number;
            external_id: string | null;
            status: string;
          }[];
        }[];
      }[];
    }[];
  } | null;
}

Field Notes

  • center_type, status, and timezone are raw enum values — no joined descriptions.
  • geo_location provides the physical address and coordinates.
  • schedule → schedule_availabilities defines the weekly operating hours.
  • schedule → schedule_overrides defines holidays and exceptional closures.
  • workflow → steps → drive_schedules → rooms → room_seats is a deep cross-service chain filtered to this center via center_id.
  • location on drive schedules is JSONB.
  • exam_types is a Postgres array of strings.