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

# Nhóm API Xác thực

Mọi API thuộc nhóm Giao dịch và Tài khoản/Danh mục/Số dư đều yêu cầu có token từ nhóm này trước. Có hai API đăng nhập độc lập — một dành cho tài khoản cơ sở (chứng khoán) và một dành cho tài khoản phái sinh — vì PHS quản lý hai sản phẩm này như hai quyền giao dịch riêng biệt.

\*\*Xác thực: \*\* Nhóm này tạo ra thông tin xác thực (token) mà mọi lệnh gọi API cần xác thực khác đều cần dùng.

## B1. Xác thực — Cơ sở

Đăng nhập bằng tài khoản giao dịch chứng khoán cơ sở và trả về access\_token, refresh\_token và otp\_token.

\*\* POST   /auth/gen-secret-key/underlying\*\*

### URL Sandbox

[https://flashapi.phs.vn/sandbox/oapi/auth/gen-secret-key/underlying](https://flashapi.phs.vn/sandbox/oapi/auth/gen-secret-key/underlying)

 

### Tham số

| **Vị trí** | **Tên**  | **Bắt buộc** | **Mô tả**                                  |
| :--------- | :------- | :----------- | :----------------------------------------- |
| body       | username | Có           | Tên đăng nhập tài khoản. Ví dụ: 022C099995 |
| body       | password | Có           | Mật khẩu tài khoản. Ví dụ: 123456aA@       |

 

### Ví dụ yêu cầu (cURL gọi vào Sandbox)

curl -X POST "[https://flashapi.phs.vn/sandbox/oapi/auth/gen-secret-key/underlying](https://flashapi.phs.vn/sandbox/oapi/auth/gen-secret-key/underlying)" \\

  -H "Content-Type: application/json" \\

  -d '\{ "username": "\<sandbox\_username>", "password": "\<sandbox\_password>" }'

 

### Ví dụ phản hồi từ Sandbox

\{

  "access\_token": "022C099995||KRYRTHUYUI||\<...token dài...>",

  "refresh\_token": "022C099995||KRYRTHUYUI||\<...token dài...>",

  "expires\_in": 28800,

  "otp\_token": "552066a35eb30a9815afc952b14287a8",

  "token\_type": "Bearer"

}

\*\*Hành vi trên Sandbox: \*\* Sandbox chấp nhận tài khoản/mật khẩu demo được cấp cho bạn trong quá trình đăng ký (liên hệ bộ phận hỗ trợ OpenAPI của PHS nếu bạn chưa có) và luôn trả về đúng một bộ access\_token, refresh\_token và otp\_token cố định như bên dưới. Hãy sử dụng chính xác các giá trị được trả về — đừng kỳ vọng chúng sẽ thay đổi giữa các lần gọi. Mã OTP mẫu cố định của Sandbox cho lượt đăng nhập này: 552066a35eb30a9815afc952b14287a8 — đây chính là giá trị bạn sẽ dùng sau này cho header x-otp-token khi đặt lệnh cơ sở.

## B2. Xác thực — Phái sinh

Đăng nhập bằng tài khoản giao dịch phái sinh và trả về access\_token, refresh\_token và otp\_token.

\*\* POST   /auth/gen-secret-key/derivative\*\*

### URL Sandbox

[https://flashapi.phs.vn/sandbox/oapi/auth/gen-secret-key/derivative](https://flashapi.phs.vn/sandbox/oapi/auth/gen-secret-key/derivative)

 

### Tham số

| **Vị trí** | **Tên**  | **Bắt buộc** | **Mô tả**                                  |
| :--------- | :------- | :----------- | :----------------------------------------- |
| body       | username | Có           | Tên đăng nhập tài khoản. Ví dụ: 022C099995 |
| body       | password | Có           | Mật khẩu tài khoản. Ví dụ: 123456aA@       |

 

### Ví dụ yêu cầu (cURL gọi vào Sandbox)

curl -X POST "[https://flashapi.phs.vn/sandbox/oapi/auth/gen-secret-key/derivative](https://flashapi.phs.vn/sandbox/oapi/auth/gen-secret-key/derivative)" \\

  -H "Content-Type: application/json" \\

  -d '\{ "username": "\<sandbox\_username>", "password": "\<sandbox\_password>" }'

 

### Ví dụ phản hồi từ Sandbox

\{

  "access\_token": "022C099995||KRYRTHUYUI||\<...token dài...>",

  "refresh\_token": "022C099995||KRYRTHUYUI||\<...token dài...>",

  "expires\_in": 28800,

  "otp\_token": "2c897da51e69cd6f3a0701884ed706ac",

  "token\_type": "Bearer"

}

> \*\*Hành vi trên Sandbox: \*\* Sandbox chấp nhận tài khoản/mật khẩu demo được cấp cho bạn trong quá trình đăng ký (liên hệ bộ phận hỗ trợ OpenAPI của PHS nếu bạn chưa có) và luôn trả về đúng một bộ access\_token, refresh\_token và otp\_token cố định như bên dưới. Hãy sử dụng chính xác các giá trị được trả về — đừng kỳ vọng chúng sẽ thay đổi giữa các lần gọi. Mã OTP mẫu cố định của Sandbox cho lượt đăng nhập này: 2c897da51e69cd6f3a0701884ed706ac — đây chính là giá trị bạn sẽ dùng sau này cho header x-otp-token khi đặt lệnh phái sinh.
