Parent Lock
The Parent Lock feature is intended to secure access to a specific screen. In accordance with the COPPA (Children’s Online Privacy Protection Rule), Publishers are required to restrict access to external websites and other sections through an age gate.

Supported flows
The Quick Brick Parent Lock plugin (parent-lock-qb) supports multiple verification flows behind a single screen:
| Flow | When it runs | Backend |
|---|---|---|
| Math Challenge | Remote PIN is off (hook or standalone) | None — local multiplication |
| Remote Verify | Remote PIN is on (hook or standalone); or pinCode with flow: "verify-pin" / "verify" | com.applicaster.pin.v1 |
| Set PIN | pinCode action with flow: "set-pin" | com.applicaster.pin.set.v1 |
| Change PIN | pinCode action with flow: "change-pin" | com.applicaster.pin.change.v1 |
| Reset PIN | pinCode action with flow: "reset-pin" | Not implemented — action returns an error |
Flow selection
pinCodeaction —options.flowselects the flow explicitly.- Hook / standalone (no pending action) — Enable Remote PIN Verification in manifest:
- On → Remote Verify
- Off → Math Challenge
- Kids profile — Set PIN and Change PIN are blocked when the active profile is a kids profile.
Remote flows (Verify, Set, Change) require Enable Remote PIN Verification and a configured PIN Verification Endpoint data source.
See the PIN Code integration guide for full CloudEvents payloads, the pinCode action reference, and server response rules.
Verification modes
Local Challenge (default) The user is presented with a simple math challenge (for example, "What is 3 × 4?"). The answer is calculated and validated entirely on the device — no network request is made. The challenge format (digits vs. words) and the maximum multiplier are configurable in the plugin settings.
Remote PIN Verification When Remote PIN Verification is enabled, the math challenge is replaced by a numeric PIN input. After the user enters a PIN of the required length, it is sent to a configured server endpoint using a cloud event. The server validates, sets, or changes the PIN depending on the active flow.
The server response determines the outcome:
- Success (HTTP 200/201): Access is granted or the PIN operation completes. If the response includes a status message (for example, "PIN set" or "Valid PIN"), it is briefly displayed before the user proceeds.
- Invalid PIN (HTTP 400): The server's error message is shown and the user may try again.
- Network or server error: A generic error message is shown and the user may try again.
After a successful Remote Verify, the PIN is cached in session storage so the user is not asked again within the same session.
See the PIN Code integration guide and the Cloud Events PIN reference for backend integration details.
Configuration
Remote PIN Verification is configured in the Data section of the plugin settings:
| Field | Description | Default |
|---|---|---|
| Enable Remote PIN Verification | Toggle to switch from local challenge to remote PIN mode | Off |
| PIN Verification Endpoint | Data source pointing to the cloud event endpoint that handles PIN requests | — |
| PIN Length | Number of digits required for the PIN | 4 |
The instruction text shown on the PIN screen is customizable via the "Instructions Text (PIN Code)" localization key.
Entry points
| Entry point | How it opens | Default flow |
|---|---|---|
| Hook | Preload hook on protected content or screen navigation | Remote Verify or Math Challenge |
| Action | Feed / UI pinCode action | From options.flow |
| Standalone | Navigate directly to the parent-lock screen | Remote Verify or Math Challenge |
On success with a hook callback: callback({ success: true, payload }).
Without callback: the navigator returns to the previous screen.
pinCode action
Use the pinCode action in a feed entry to open Parent Lock with a specific flow and continue to a destination screen on success:
{
"type": "pinCode",
"options": {
"typeMapping": "target-screen",
"navigationAction": "push",
"flow": "verify-pin"
}
}
typeMapping is the content type of the destination screen after PIN succeeds — not the parent-lock screen itself. See PIN Code for all flow values and server contracts.
Math Challenge does not use pinCode. Use a hook or navigateToScreen with remote PIN disabled.
Mobile and TVs
Add the parent lock plugin to your versions.

Add the Parent lock screen to the layout.

To localize the texts according to your needs, open the “Localization” modal on the right panel of the Parent lock screen.

Modify the challenge by using digits (1,2,3) or words (one, two, three). Please note that the maximum multiplier is 10, even if the higher number is set in the field.

Design the screen. If you choose to display a background image, its size should be 1125x2436px, and the close button size should be 100x100 px.

Once it's done, add the screen as a pre-hook to the relevant screens by going to the “Screen Storyboard” section and select the parent lock screen.

Parent Lock Hook Behavior Details
The behavior of the Parent Lock hook depends on how the target content is accessed:
1. Screen Launched via Navigation
- If the Parent Lock hook target is a screen opened directly from navigation (i.e., no specific video or entry is referenced in the call), the Parent Lock screen is always presented to the user.
2. Entry-Based Target (e.g., Video Clicked)
- When the target is specifically defined by an entry (for example, the user selects a video):
- The system checks the entry’s
requires_authenticationflag and evaluatesfreeextension:- If authentication is not required and the entry is free, the Parent Lock is skipped.
- Otherwise, the following applies:
- If "Check User Authentication" is enabled in the plugin configuration:
- Additional authentication checks (from the specified login and storefront screens) are performed in the background to decide whether to present the Parent Lock.
- If "Check User Authentication" is disabled:
- The Parent Lock will be presented for all non-free entries that require authentication, even if the user has access and is already logged in (i.e., forced presentation).
- If "Check User Authentication" is enabled in the plugin configuration:
- The system checks the entry’s
Summary Table
| Scenario | Parent Lock Presented? |
|---|---|
| Screen opened via navigation (no entry) | Always |
| Entry is free & does NOT require authentication | Skipped |
| Entry requires authentication or is not free: | |
| — "Check User Authentication" is enabled | Depends on background authentication & access checks |
| — "Check User Authentication" is disabled | Always (forced presentation) |
Note:
- The "Check User Authentication" setting provides flexibility for platforms that wish to skip Parent Lock if the user is already authenticated and allowed access to the content.
- Forced presentation ignores authentication state, requiring the Parent Lock even for authenticated users.