Xác thực
Xác thực bằng API key. Thêm header X-API-Key vào mỗi request. Key do quản trị viên cấp; key loại integration được gắn với một sân golf theo từng key (owner_id). Sân golf đích được xác định từ key — không cần truyền golf_club_id trong request (không thể truy cập dữ liệu sân golf khác).
Ví dụ header request
POST /api/integration/tee-times/sync.php HTTP/1.1
Host: vn.govigolf.com
X-API-Key: YOUR_API_KEY
Content-Type: application/json
Phạm vi: integration:read cho thao tác đọc, integration:write cho thao tác ghi.
Xác thực bằng API key (header X-API-Key, key loại owner_type='golf_club'). Xử lý bởi GolfClubAuthService. Sân golf đích xác định từ key (owner_id) — không cần truyền golf_club_id làm tham số.
Ví dụ header request
GET /api/manage/reservations/list.php HTTP/1.1
Host: vn.govigolf.com
X-API-Key: YOUR_API_KEY
Phạm vi (theo từng tài nguyên): reservations:read/write / tee_times:read/write / notifications:read/write / settings:read/write / reports:read.
Tích hợp: Khung giờ tee
Đồng bộ khung giờ tee từ hệ thống bên ngoài vào GOVIGO (ngoài → GOVIGO). Tối đa 500 khung giờ mỗi request.
| Tham số | Kiểu | Bắt buộc | Mô tả |
slots | array | Bắt buộc | Mảng các đối tượng khung giờ (tối đa 500) |
Các trường của phần tử slots
| Trường | Kiểu | Bắt buộc | Mô tả |
course_id | integer | Bắt buộc | ID sân (phải thuộc sân golf của bạn) |
tee_time | string | Bắt buộc | Giờ tee (YYYY-MM-DD HH:MM) |
total_slots | integer | Tùy chọn | Tổng số chỗ (mặc định: 4) |
available_slots | integer | Tùy chọn | Số chỗ còn trống (mặc định: bằng total_slots) |
status | string | Tùy chọn | open / closed / maintenance (mặc định: open) |
plan_id | integer | Tùy chọn | ID gói liên kết (phải thuộc sân golf của bạn) |
Ví dụ request
POST /api/integration/tee-times/sync.php HTTP/1.1
Host: vn.govigolf.com
X-API-Key: YOUR_API_KEY
Content-Type: application/json
{
"slots": [
{ "course_id": 10, "tee_time": "2026-07-01 07:30", "total_slots": 4, "available_slots": 4 }
]
}
Các trường trong data phản hồi
| Trường | Kiểu | Mô tả |
inserted_count | integer | Số khung giờ được tạo mới |
updated_count | integer | Số khung giờ được cập nhật |
error_count | integer | Số mục bị lỗi |
errors | array | Mảng thông tin lỗi chi tiết |
Lấy khung giờ tee từ GOVIGO (GOVIGO → ngoài).
| Tham số | Kiểu | Bắt buộc | Mô tả |
date_from | string | Bắt buộc | Ngày bắt đầu (YYYY-MM-DD) |
date_to | string | Bắt buộc | Ngày kết thúc (YYYY-MM-DD) |
course_id | integer | Tùy chọn | Lọc theo sân |
Ví dụ request
GET /api/integration/tee-times/pull.php?date_from=2026-07-01&date_to=2026-07-07 HTTP/1.1
Host: vn.govigolf.com
X-API-Key: YOUR_API_KEY
Các trường trong data phản hồi
| Trường | Kiểu | Mô tả |
golf_club_id | integer | ID sân golf |
date_from / date_to | string | Khoảng ngày đã yêu cầu |
count | integer | Số khung giờ trả về |
slots | array | Mảng đối tượng khung giờ (xem bên dưới) |
Các trường của phần tử slots
| Trường | Kiểu | Mô tả |
slot_id | integer | ID khung giờ (ID nội bộ GOVIGO) |
course_id | integer | ID sân |
course_name | string | Tên sân |
tee_time | string | Giờ tee (YYYY-MM-DD HH:MM) |
total_slots | integer | Tổng số chỗ |
available_slots | integer | Số chỗ còn trống |
status | string | open / closed / maintenance |
allow_join | boolean | Cho phép đặt chung (join) |
plan_id | integer|null | ID gói liên kết |
Đối chiếu bản sao GOVIGO với toàn bộ snapshot khung giờ trong khoảng thời gian từ phía sân golf (để khắc phục lệch lạc do bỏ sót webhook, v.v.). Tất cả khung giờ được upsert; các khung giờ vắng mặt trong snapshot sẽ được xử lý. Khung giờ chưa có đặt chỗ sẽ bị đóng logic (status=closed — không xóa vật lý); khung giờ đã có đặt chỗ nhưng vắng mặt trong snapshot sẽ được trả về dưới dạng conflicts (cần giải quyết thủ công) thay vì bị đóng. Khung giờ đã đóng sẽ ẩn khỏi chế độ xem tình trạng chỗ trống của khách hàng và tự động chuyển lại open khi sân golf gửi lại. Nên chạy định kỳ (ví dụ: hằng đêm).
| Tham số | Kiểu | Bắt buộc | Mô tả |
date_from / date_to | string | Bắt buộc | Khoảng đối chiếu (YYYY-MM-DD) |
course_id | integer | Tùy chọn | Nếu chỉ định, chỉ đối chiếu sân đó |
slots | array | Bắt buộc | Tất cả khung giờ trong khoảng (tối đa 2000; chia thành khoảng hẹp hơn nếu cần). Cùng trường với sync (xem ở trên) |
Ví dụ request
POST /api/integration/tee-times/reconcile.php HTTP/1.1
Host: vn.govigolf.com
X-API-Key: YOUR_API_KEY
Content-Type: application/json
{
"date_from": "2026-07-01",
"date_to": "2026-07-01",
"slots": [
{ "course_id": 10, "tee_time": "2026-07-01 07:30", "total_slots": 4, "available_slots": 4 }
]
}
Các trường trong data phản hồi
| Trường | Kiểu | Mô tả |
inserted_count | integer | Số khung giờ được tạo mới |
updated_count | integer | Số khung giờ được cập nhật |
closed_count | integer | Số khung giờ bị đóng logic (chưa đặt và vắng trong snapshot) |
conflict_count | integer | Số xung đột (đã đặt và vắng trong snapshot) |
conflicts | array | Mảng đối tượng khung giờ xung đột (xem bên dưới). Cần giải quyết thủ công. |
error_count | integer | Số lỗi xử lý |
errors | array | Mảng thông tin lỗi chi tiết |
Các trường của phần tử conflicts
| Trường | Kiểu | Mô tả |
tee_time_slot_id | integer | ID khung giờ (ID nội bộ GOVIGO) |
course_id | integer | ID sân |
tee_time | string | Giờ tee (YYYY-MM-DD HH:MM) |
total_slots | integer | Tổng số chỗ |
available_slots | integer | Số chỗ còn trống |
booked | integer | Số chỗ đã đặt (= tổng - còn trống) |
Tích hợp: Đặt chỗ
Nhập đặt chỗ từ hệ thống bên ngoài vào GOVIGO (ngoài → GOVIGO). external_ref là khóa idempotency; gửi trùng với cùng giá trị sẽ trả về đặt chỗ đã tồn tại và kết thúc.
| Tham số | Kiểu | Bắt buộc | Mô tả |
external_ref | string | Bắt buộc | Khóa tham chiếu đặt chỗ từ hệ thống ngoài (khóa idempotency để ngăn nhập trùng) |
course_id | integer | Bắt buộc | ID sân (phải thuộc sân golf của bạn) |
tee_date | string | Bắt buộc | Ngày chơi (YYYY-MM-DD) |
customer_name | string | Bắt buộc | Tên người đặt |
player_count | integer | Bắt buộc | Số người chơi (từ 1 trở lên) |
tee_time | string | Tùy chọn | Giờ tee (HH:MM). Nếu có tee_time_slot_id, sẽ dùng giờ của khung giờ đó. |
tee_time_slot_id | integer | Tùy chọn | ID khung giờ GOVIGO. Nếu chỉ định, sẽ trừ kho theo số người chơi (409 nếu không đủ chỗ). |
golf_plan_id | integer | Tùy chọn | ID gói (phải thuộc sân golf của bạn) |
customer_email | string | Tùy chọn | Email người đặt |
customer_phone | string | Tùy chọn | Số điện thoại người đặt |
total_amount | integer | Tùy chọn | Tổng tiền (VND; mặc định: 0) |
remark | string | Tùy chọn | Ghi chú |
options | object | Tùy chọn | Thông tin tùy chọn (key-value tùy ý) |
attendees | array | Tùy chọn | Danh sách đồng hành. Mỗi phần tử: {name (bắt buộc), email?, phone?} |
Ví dụ request
POST /api/integration/reservations/receive.php HTTP/1.1
Host: vn.govigolf.com
X-API-Key: YOUR_API_KEY
Content-Type: application/json
{
"external_ref": "EXT-12345",
"course_id": 10,
"tee_date": "2026-07-01",
"tee_time": "07:30",
"customer_name": "Nguyen Van A",
"customer_email": "nguyenvana@example.com",
"customer_phone": "+84-90-0000-0000",
"player_count": 2,
"total_amount": 3600000
}
Các trường trong data phản hồi
| Trường | Kiểu | Mô tả |
reservation_id | integer | ID đặt chỗ do GOVIGO cấp |
external_ref | string | Khóa tham chiếu ngoài (giống request) |
status | string | pending (trạng thái ban đầu khi tạo) |
duplicate | boolean | Chỉ là true khi external_ref đã tồn tại (HTTP 200) |
Phản ánh thay đổi từ hệ thống ngoài vào bản sao GOVIGO (ngoài → GOVIGO). Chỉ cập nhật các trường được chỉ định. Thay đổi số người chơi sẽ điều chỉnh kho theo chênh lệch (409 nếu tăng mà không đủ chỗ). Dùng cancel.php để hủy. Thay đổi ngày/giờ không được phép với đặt chỗ liên kết khung giờ (hãy hủy và tạo lại).
| Tham số | Kiểu | Bắt buộc | Mô tả |
external_ref | string | Một trong hai | Xác định đích bằng khóa tham chiếu ngoài |
reservation_id | integer | Một trong hai | Xác định đích bằng ID đặt chỗ GOVIGO |
customer_name | string | Tùy chọn | Tên người đặt |
customer_email | string | Tùy chọn | Email người đặt |
customer_phone | string | Tùy chọn | Số điện thoại người đặt |
tee_date | string | Tùy chọn | Ngày chơi (YYYY-MM-DD). Không thể thay đổi với đặt chỗ liên kết khung giờ. |
tee_time | string | Tùy chọn | Giờ tee (HH:MM). Không thể thay đổi với đặt chỗ liên kết khung giờ. |
player_count | integer | Tùy chọn | Số người chơi. Điều chỉnh kho theo chênh lệch nếu liên kết khung giờ. |
total_amount | integer | Tùy chọn | Tổng tiền (VND) |
remark | string | Tùy chọn | Ghi chú |
options | object | Tùy chọn | Thông tin tùy chọn |
status | integer | Tùy chọn | Chỉ được chỉ định 1=đã đặt / 3=hoàn thành. Dùng cancel.php để hủy. |
Ví dụ request
POST /api/integration/reservations/update.php HTTP/1.1
Host: vn.govigolf.com
X-API-Key: YOUR_API_KEY
Content-Type: application/json
{ "external_ref": "EXT-12345", "player_count": 3, "tee_time": "08:00" }
Các trường trong data phản hồi
| Trường | Kiểu | Mô tả |
reservation_id | integer | ID đặt chỗ đã cập nhật |
external_ref | string|null | Khóa tham chiếu ngoài |
Phản ánh hủy từ hệ thống ngoài vào bản sao GOVIGO (ngoài → GOVIGO). Đặt trạng thái thành đã hủy và hoàn trả kho khung giờ theo số người chơi nếu có liên kết. Idempotent (trả về thành công ngay cả khi đã hủy rồi).
| Tham số | Kiểu | Bắt buộc | Mô tả |
external_ref | string | Một trong hai | Xác định đích bằng khóa tham chiếu ngoài |
reservation_id | integer | Một trong hai | Xác định đích bằng ID đặt chỗ GOVIGO |
Ví dụ request
POST /api/integration/reservations/cancel.php HTTP/1.1
Host: vn.govigolf.com
X-API-Key: YOUR_API_KEY
Content-Type: application/json
{ "external_ref": "EXT-12345" }
Các trường trong data phản hồi
| Trường | Kiểu | Mô tả |
reservation_id | integer | ID đặt chỗ đã hủy |
external_ref | string|null | Khóa tham chiếu ngoài |
status | string | cancelled |
already | boolean | Chỉ là true khi đã hủy trước đó |
Lấy dữ liệu đặt chỗ từ GOVIGO (GOVIGO → ngoài). Khoảng mặc định: hôm nay đến 30 ngày tới.
| Tham số | Kiểu | Bắt buộc | Mô tả |
date_from | string | Tùy chọn | Ngày bắt đầu (YYYY-MM-DD; mặc định: hôm nay) |
date_to | string | Tùy chọn | Ngày kết thúc (YYYY-MM-DD; mặc định: hôm nay + 30 ngày) |
status | integer | Tùy chọn | Lọc theo mã trạng thái (xem bảng bên dưới) |
include_attendees | boolean | Tùy chọn | true để bao gồm thông tin đồng hành |
Các trường trong data phản hồi
| Trường | Kiểu | Mô tả |
golf_club_id | integer | ID sân golf |
date_from / date_to | string | Khoảng ngày đã yêu cầu |
count | integer | Số đặt chỗ trả về |
reservations | array | Mảng đối tượng đặt chỗ (xem bên dưới) |
Các trường của phần tử reservations
| Trường | Kiểu | Mô tả |
reservation_id | integer | ID đặt chỗ GOVIGO |
course_id | integer | ID sân |
course_name | string | Tên sân |
customer_name | string | Tên người đặt |
customer_email | string | Email người đặt |
customer_phone | string | SĐT người đặt |
tee_date | string | Ngày chơi (YYYY-MM-DD) |
tee_time | string | Giờ tee (HH:MM) |
player_count | integer | Số người chơi |
total_amount | integer | Tổng tiền (VND) |
status | string | pending_payment / reserved / cancelled / completed |
status_code | integer | Mã trạng thái (0=chờ thanh toán / 1=đã đặt / 2=đã hủy / 3=hoàn thành) |
source | string | Nguồn đặt (api_integration v.v.) |
external_ref | string|null | Khóa tham chiếu ngoài |
created_at | string | Ngày tạo |
updated_at | string | Ngày cập nhật |
attendees | array | Chỉ khi include_attendees=true. Mảng {name, email, phone} |
Tích hợp: Webhook
Đăng ký URL nhận thông báo sự kiện về đặt chỗ, kho, v.v.
| Tham số | Kiểu | Bắt buộc | Mô tả |
url | string | Bắt buộc | URL nhận Webhook (bắt buộc HTTPS) |
events | array | Bắt buộc | Loại sự kiện đăng ký (reservation.created/updated/cancelled/status_changed, tee_time.updated, *) |
Ví dụ request
POST /api/integration/webhooks/subscribe.php HTTP/1.1
Host: vn.govigolf.com
X-API-Key: YOUR_API_KEY
Content-Type: application/json
{ "url": "https://example.com/hook", "events": ["reservation.created", "reservation.cancelled"] }
Trả về danh sách Webhook đã đăng ký (không tham số; sân golf đích xác định từ key).
Hủy đăng ký Webhook đã đăng ký.
| Tham số | Kiểu | Bắt buộc | Mô tả |
subscription_id | integer | Bắt buộc | ID đăng ký cần hủy |
Gửi sự kiện kiểm thử đến đăng ký chỉ định.
| Tham số | Kiểu | Bắt buộc | Mô tả |
subscription_id | integer | Bắt buộc | ID đăng ký cần kiểm thử |
Quản lý: Đặt chỗ
Trả về danh sách đặt chỗ của sân golf. Mặc định 20 mục/trang (tối đa 100).
| Tham số | Kiểu | Bắt buộc | Mô tả |
status | integer | Tùy chọn | Lọc theo mã trạng thái (xem bảng bên dưới) |
date_from / date_to | string | Tùy chọn | Lọc theo ngày chơi (YYYY-MM-DD) |
search | string | Tùy chọn | Tìm kiếm từ khóa theo tên, email hoặc SĐT người đặt |
page | integer | Tùy chọn | Số trang (mặc định: 1) |
per_page | integer | Tùy chọn | Mục/trang (mặc định: 20, tối đa: 100) |
Ví dụ request
GET /api/manage/reservations/list.php?date_from=2026-07-01&date_to=2026-07-31&page=1 HTTP/1.1
Host: vn.govigolf.com
X-API-Key: YOUR_API_KEY
Các trường trong data phản hồi
| Trường | Kiểu | Mô tả |
reservations | array | Mảng đối tượng đặt chỗ (xem bên dưới) |
pagination.page | integer | Trang hiện tại |
pagination.per_page | integer | Mục mỗi trang |
pagination.total_count | integer | Tổng số mục |
pagination.total_pages | integer | Tổng số trang |
pagination.has_next | boolean | Có trang tiếp theo |
pagination.has_prev | boolean | Có trang trước |
Các trường của phần tử reservations
| Trường | Kiểu | Mô tả |
id | integer | ID đặt chỗ |
course_name | string | Tên sân |
customer_name | string | Tên người đặt |
customer_email | string | Email người đặt |
customer_phone | string | SĐT người đặt |
tee_date | string | Ngày chơi (YYYY-MM-DD) |
tee_time | string | Giờ tee (HH:MM) |
player_count | integer | Số người chơi |
total_amount | integer | Tổng tiền (VND) |
status | string | Chuỗi trạng thái (xem bảng bên dưới) |
status_code | integer | Mã trạng thái (0–3, 9) |
source | string | Nguồn đặt |
remark | string | Ghi chú |
created_at | string | Ngày tạo |
Mã trạng thái
0 = pending_payment / 1 = reserved / 2 = cancelled / 3 = completed / 9 = cancelled (cũ)
Trả về chi tiết đặt chỗ bao gồm thông tin đồng hành.
| Tham số | Kiểu | Bắt buộc | Mô tả |
reservation_id | integer | Bắt buộc | ID đặt chỗ (cũng chấp nhận id cũ) |
Các trường trong data.reservation phản hồi
| Trường | Kiểu | Mô tả |
id | integer | ID đặt chỗ |
course_name | string | Tên sân |
plan_name | string|null | Tên gói |
customer_name | string | Tên người đặt |
customer_email | string | Email người đặt |
customer_phone | string | SĐT người đặt |
tee_date | string | Ngày chơi (YYYY-MM-DD) |
tee_time | string | Giờ tee (HH:MM) |
player_count | integer | Số người chơi |
total_amount | integer | Tổng tiền (VND) |
remark | string | Ghi chú |
options | object|null | Thông tin tùy chọn |
status | string | Chuỗi trạng thái (cùng mã như danh sách) |
status_code | integer | Mã trạng thái (0–3, 9) |
source | string | Nguồn đặt |
external_ref | string|null | Khóa tham chiếu ngoài |
created_at | string | Ngày tạo |
updated_at | string | Ngày cập nhật |
attendees | array | Danh sách đồng hành. Mỗi phần tử: {id, name, email, phone} |
Cập nhật trạng thái đặt chỗ. status=9 được xử lý như hủy và hoàn trả kho khung giờ. Đặt chỗ đã hủy không thể chuyển sang trạng thái khác (409).
| Tham số | Kiểu | Bắt buộc | Mô tả |
reservation_id | integer | Bắt buộc | ID đặt chỗ |
status | integer | Bắt buộc | Mã trạng thái mới (0–3, 9) |
memo | string | Tùy chọn | Ghi chú thay đổi (thêm vào remark) |
Ví dụ request
POST /api/manage/reservations/update-status.php HTTP/1.1
Host: vn.govigolf.com
X-API-Key: YOUR_API_KEY
Content-Type: application/json
{ "reservation_id": 123, "status": 1, "memo": "Đã xác nhận" }
Các trường trong data phản hồi
| Trường | Kiểu | Mô tả |
reservation_id | integer | ID đặt chỗ đã cập nhật |
old_status | string | Chuỗi trạng thái cũ |
new_status | string | Chuỗi trạng thái mới |
Quản lý: Khung giờ tee
Trả về danh sách khung giờ tee cho ngày chỉ định.
| Tham số | Kiểu | Bắt buộc | Mô tả |
date | string | Bắt buộc | Ngày cần xem (YYYY-MM-DD) |
course_id | integer | Tùy chọn | Lọc theo sân |
Các trường trong data phản hồi
| Trường | Kiểu | Mô tả |
date | string | Ngày cần xem |
count | integer | Số khung giờ trả về |
slots | array | Mảng đối tượng khung giờ (xem bên dưới) |
Các trường của phần tử slots
| Trường | Kiểu | Mô tả |
id | integer | ID khung giờ (= slot_id) |
course_id | integer | ID sân |
course_name | string | Tên sân |
tee_time | string | Giờ tee (HH:MM) |
total_slots | integer | Tổng số chỗ |
available_slots | integer | Số chỗ còn trống |
booked_slots | integer | Số chỗ đã đặt (= tổng - còn trống) |
status | string | open / closed / maintenance |
allow_join | boolean | Cho phép đặt chung (join) |
plan_id | integer|null | ID gói liên kết |
plan_name | string|null | Tên gói |
Cập nhật một khung giờ tee. Trả về 400 nếu available_slots sau cập nhật nằm ngoài khoảng 0–total_slots.
| Tham số | Kiểu | Bắt buộc | Mô tả |
slot_id | integer | Bắt buộc | ID khung giờ tee |
total_slots | integer | Tùy chọn | Tổng số chỗ (từ 1 trở lên) |
available_slots | integer | Tùy chọn | Số chỗ còn trống (từ 0, ≤ total_slots) |
status | string | Tùy chọn | open / closed / maintenance |
allow_join | boolean | Tùy chọn | Cho phép đặt chung |
golf_club_plan_id | integer|null | Tùy chọn | ID gói liên kết (null để bỏ liên kết; phải thuộc sân golf của bạn) |
Các trường trong data phản hồi
| Trường | Kiểu | Mô tả |
slot_id | integer | ID khung giờ đã cập nhật |
updated | boolean | true |
Cập nhật nhiều khung giờ tee trong một request (tối đa 200). Nếu khung giờ nào không qua được xác thực thì bỏ qua và trả về chi tiết trong errors; các khung giờ khác vẫn được cập nhật.
| Tham số | Kiểu | Bắt buộc | Mô tả |
slots | array | Bắt buộc | Mảng khung giờ cần cập nhật (tối đa 200) |
Các trường của phần tử slots
| Trường | Kiểu | Bắt buộc | Mô tả |
slot_id | integer | Bắt buộc | ID khung giờ tee |
total_slots | integer | Tùy chọn | Tổng số chỗ |
available_slots | integer | Tùy chọn | Số chỗ còn trống |
status | string | Tùy chọn | open / closed / maintenance |
allow_join | boolean | Tùy chọn | Cho phép đặt chung |
Ví dụ request
POST /api/manage/tee-times/bulk-update.php HTTP/1.1
Host: vn.govigolf.com
X-API-Key: YOUR_API_KEY
Content-Type: application/json
{ "slots": [ { "slot_id": 501, "available_slots": 0, "status": "closed" }, { "slot_id": 502, "available_slots": 2 } ] }
Các trường trong data phản hồi
| Trường | Kiểu | Mô tả |
updated_count | integer | Số khung giờ đã cập nhật thành công |
error_count | integer | Số mục bị bỏ qua |
errors | array | Mảng thông tin lỗi chi tiết |
Quản lý: Thông báo
Trả về danh sách thông báo theo thứ tự ngày tạo giảm dần.
| Tham số | Kiểu | Bắt buộc | Mô tả |
page | integer | Tùy chọn | Số trang (mặc định: 1) |
per_page | integer | Tùy chọn | Mục/trang (mặc định: 20, tối đa: 100) |
unread_only | integer | Tùy chọn | 1 để chỉ trả về chưa đọc |
Các trường trong data phản hồi
| Trường | Kiểu | Mô tả |
notifications | array | Mảng đối tượng thông báo (xem bên dưới) |
pagination | object | Thông tin phân trang (cùng định dạng với danh sách đặt chỗ) |
Các trường của phần tử notifications
| Trường | Kiểu | Mô tả |
id | integer | ID thông báo |
type | string | Loại thông báo (ví dụ: reservation.created) |
reserve_id | integer|null | ID đặt chỗ liên quan |
title | string | Tiêu đề thông báo |
body | string | Nội dung thông báo |
is_read | boolean | Cờ đã đọc |
created_at | string | Ngày tạo |
Đánh dấu thông báo là đã đọc. Cần cung cấp notification_ids hoặc all.
| Tham số | Kiểu | Bắt buộc | Mô tả |
notification_ids | array | Một trong hai | Mảng ID thông báo cần đánh dấu đọc (integer[]) |
all | boolean | Một trong hai | true để đánh dấu tất cả là đã đọc |
Các trường trong data phản hồi
| Trường | Kiểu | Mô tả |
updated_count | integer | Số thông báo đã được đánh dấu là đã đọc |
Trả về số lượng thông báo chưa đọc (không tham số).
Các trường trong data phản hồi
| Trường | Kiểu | Mô tả |
unread_count | integer | Số lượng thông báo chưa đọc |
Quản lý: Cài đặt
Lấy cài đặt sân golf. Nếu bỏ qua key, trả về tất cả cài đặt dưới dạng { key: value }.
| Tham số | Kiểu | Bắt buộc | Mô tả |
key | string | Tùy chọn | Trả về chỉ key này nếu chỉ định; tất cả key nếu bỏ qua |
Các trường trong data phản hồi (một key)
| Trường | Kiểu | Mô tả |
key | string | Tên cài đặt |
value | string|null | Giá trị cài đặt (null nếu chưa đặt) |
Các trường trong data phản hồi (tất cả key)
| Trường | Kiểu | Mô tả |
count | integer | Tổng số key cài đặt |
settings | object | Object dạng { "key": "value", ... } |
Cập nhật cài đặt sân golf (UPSERT). Có thể cập nhật nhiều key cùng lúc.
| Tham số | Kiểu | Bắt buộc | Mô tả |
settings | object | Bắt buộc | Object cài đặt dạng { "key": "value", ... } |
Ví dụ request
POST /api/manage/settings/update.php HTTP/1.1
Host: vn.govigolf.com
X-API-Key: YOUR_API_KEY
Content-Type: application/json
{ "settings": { "auto_confirm": "1", "cancel_deadline_days": "3" } }
Các trường trong data phản hồi
| Trường | Kiểu | Mô tả |
updated_count | integer | Số key cài đặt đã cập nhật |
settings | object | Cài đặt đã cập nhật dạng { "key": "value", ... } |
Quản lý: Báo cáo
Trả về tổng hợp thống kê đặt chỗ. Khoảng mặc định: tháng hiện tại.
| Tham số | Kiểu | Bắt buộc | Mô tả |
date_from / date_to | string | Tùy chọn | Khoảng thời gian (YYYY-MM-DD; mặc định: ngày đầu đến cuối tháng hiện tại) |
group_by | string | Tùy chọn | date (theo ngày) / course (theo sân) / status (theo trạng thái). Mặc định: date |
Các trường trong data phản hồi
| Trường | Kiểu | Mô tả |
period.from / period.to | string | Khoảng tổng hợp |
summary.total_reservations | integer | Tổng số đặt chỗ |
summary.pending_count | integer | Số đang chờ (chưa xác nhận hoặc hủy) |
summary.confirmed_count | integer | Số đã xác nhận |
summary.cancelled_count | integer | Số đã hủy |
summary.completed_count | integer | Số hoàn thành |
summary.total_players | integer | Tổng số người chơi |
summary.total_revenue | integer | Tổng doanh thu (VND; không tính hủy) |
summary.avg_amount | integer | Doanh thu trung bình mỗi đặt chỗ (VND; không tính hủy) |
breakdown | array | Mảng phân tích theo nhóm (xem bên dưới) |
Các trường của phần tử breakdown
| Trường | Kiểu | Mô tả |
date / course_name / status | string | Tên key thay đổi tùy theo group_by |
reservation_count | integer | Số đặt chỗ |
player_count | integer | Tổng số người chơi |
revenue | integer | Tổng doanh thu (VND; không tính hủy) |
Xuất dữ liệu đặt chỗ dưới dạng CSV. Phản hồi là text/csv (không phải JSON; file CSV UTF-8 BOM).
| Tham số | Kiểu | Bắt buộc | Mô tả |
date_from / date_to | string | Tùy chọn | Khoảng thời gian (YYYY-MM-DD; mặc định: tháng hiện tại) |
status | integer | Tùy chọn | Lọc theo mã trạng thái |
Ví dụ request
GET /api/manage/reports/export.php?date_from=2026-07-01&date_to=2026-07-31 HTTP/1.1
Host: vn.govigolf.com
X-API-Key: YOUR_API_KEY
Cột CSV
| Cột | Mô tả |
| Mã đặt chỗ | ID đặt chỗ GOVIGO |
| Sân | Tên sân |
| Tên người đặt | Tên khách hàng |
| Email | Email khách hàng |
| Điện thoại | SĐT khách hàng |
| Ngày chơi | YYYY-MM-DD |
| Giờ | HH:MM |
| Số người | Số người chơi |
| Số tiền | Tổng tiền (VND) |
| Trạng thái | Nhãn trạng thái |
| Nguồn | Nguồn đặt |
| Ghi chú | Nội dung ghi chú |
| Ngày tạo | Ngày và giờ tạo |