# Webhook Guide

## Status

**Beta / Sandbox Simulation Only.** Quardlyn does not currently send production HTTP webhooks from Quardlyn to CRM/developer endpoints.

The production launch integration is **CRM -> Quardlyn API**. CRMs push signed property create, read/list/lookup, update/replace, price, media, lifecycle, withdraw, archive, restore/reactivate and delete changes directly to Quardlyn.

## Production Supported Flow

```text
CRM -> Quardlyn API
```

Use the public Property API endpoints:

```text
GET    /api/v1/crm/properties
GET    /api/v1/crm/properties/{external_ref}
GET    /api/v1/crm/properties/lookup?id_type=external_ref&value={external_ref}
POST   /api/v1/crm/properties
PUT    /api/v1/crm/properties/{external_ref}
PATCH  /api/v1/crm/properties/{external_ref}
POST   /api/v1/crm/properties/{external_ref}/withdraw
POST   /api/v1/crm/properties/{external_ref}/archive
POST   /api/v1/crm/properties/{external_ref}/restore
POST   /api/v1/crm/properties/{external_ref}/reactivate
DELETE /api/v1/crm/properties/{external_ref}
```

Production API calls use the API/HMAC Signing Secret and the standard HMAC headers documented in `authentication.md`.

## Outbound Webhook Simulation

```text
Quardlyn -> CRM Webhooks
```

Outbound webhooks are retained as sandbox simulator/scaffolding only. Sandbox rows can be inspected and replayed in the Developer Console, but replay does not send production HTTP requests to developer endpoints.

Sandbox simulations may use these event names:

- `property.created`
- `property.updated`
- `property.deleted`
- `property.withdrawn`
- `property.archived`
- `property.restored`
- `property.reactivated`
- `property.sync.test`
- `property.sync.failed`

## Not Available In Production Yet

Production outbound webhook endpoint URLs, subscriptions, HTTP POST delivery, delivery success after real HTTP success, retry/backoff delivery workers, response/status recording, replay/manual retry and endpoint disabling are not part of the initial CRM partner launch.

Use CRM-side polling/read endpoints or CRM-side event queues with the Property API for production synchronisation.
