Implement trust page and extend store/status API contract docs
This commit is contained in:
parent
ffb8ce0ead
commit
df0788fb43
@ -8,6 +8,7 @@ Public-facing EDUT web surfaces and deployment specs.
|
|||||||
public/
|
public/
|
||||||
index.html
|
index.html
|
||||||
store/index.html
|
store/index.html
|
||||||
|
trust/index.html
|
||||||
privacy/index.html
|
privacy/index.html
|
||||||
terms/index.html
|
terms/index.html
|
||||||
translations/
|
translations/
|
||||||
|
|||||||
@ -180,3 +180,28 @@ Error (`422` invalid email):
|
|||||||
"message": "Email format is invalid."
|
"message": "Email format is invalid."
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## 6) `GET /secret/membership/status`
|
||||||
|
|
||||||
|
Request by wallet:
|
||||||
|
|
||||||
|
`GET /secret/membership/status?wallet=0x3ea6cbf98d23e2cf7b6f4f9bb1fb4f50b710f2d5`
|
||||||
|
|
||||||
|
Success (`200`):
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"status": "active",
|
||||||
|
"wallet": "0x3ea6cbf98d23e2cf7b6f4f9bb1fb4f50b710f2d5",
|
||||||
|
"designation_code": "0217073045482"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Error (`400` missing selectors):
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"error": "missing_selector",
|
||||||
|
"message": "Provide wallet or designation_code."
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|||||||
@ -70,6 +70,28 @@ paths:
|
|||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/MembershipConfirmResponse'
|
$ref: '#/components/schemas/MembershipConfirmResponse'
|
||||||
|
/secret/membership/status:
|
||||||
|
get:
|
||||||
|
summary: Resolve membership status by wallet or designation code
|
||||||
|
parameters:
|
||||||
|
- in: query
|
||||||
|
name: wallet
|
||||||
|
required: false
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
pattern: '^0x[a-fA-F0-9]{40}$'
|
||||||
|
- in: query
|
||||||
|
name: designation_code
|
||||||
|
required: false
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: Membership status resolved
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/MembershipStatusResponse'
|
||||||
/secret/notify:
|
/secret/notify:
|
||||||
post:
|
post:
|
||||||
summary: Save optional notification email
|
summary: Save optional notification email
|
||||||
@ -232,6 +254,17 @@ components:
|
|||||||
activated_at:
|
activated_at:
|
||||||
type: string
|
type: string
|
||||||
format: date-time
|
format: date-time
|
||||||
|
MembershipStatusResponse:
|
||||||
|
type: object
|
||||||
|
required: [status]
|
||||||
|
properties:
|
||||||
|
status:
|
||||||
|
type: string
|
||||||
|
enum: [active, none, suspended, revoked, unknown]
|
||||||
|
wallet:
|
||||||
|
type: string
|
||||||
|
designation_code:
|
||||||
|
type: string
|
||||||
NotifyRequest:
|
NotifyRequest:
|
||||||
type: object
|
type: object
|
||||||
required: [email, designation_code, wallet, locale]
|
required: [email, designation_code, wallet, locale]
|
||||||
|
|||||||
@ -4,6 +4,8 @@
|
|||||||
|
|
||||||
Provide transparent operational facts without exposing private internals.
|
Provide transparent operational facts without exposing private internals.
|
||||||
|
|
||||||
|
Current implementation target: `/public/trust/index.html` (deployment placeholders included).
|
||||||
|
|
||||||
## Required Sections
|
## Required Sections
|
||||||
|
|
||||||
1. Active chain and chain ID.
|
1. Active chain and chain ID.
|
||||||
|
|||||||
@ -38,6 +38,7 @@ Implemented now:
|
|||||||
11. Conformance vectors + failure matrix + release gate + security checklist.
|
11. Conformance vectors + failure matrix + release gate + security checklist.
|
||||||
12. Deployment templates + invariants + chain operations runbook.
|
12. Deployment templates + invariants + chain operations runbook.
|
||||||
13. Issuer onboarding pack, migration policy, trust page spec, and integration mapping docs.
|
13. Issuer onboarding pack, migration policy, trust page spec, and integration mapping docs.
|
||||||
|
14. Public `/trust` page scaffold aligned with trust-page spec.
|
||||||
|
|
||||||
Remaining in this repo:
|
Remaining in this repo:
|
||||||
|
|
||||||
|
|||||||
@ -181,7 +181,7 @@
|
|||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p class="foot">This page is intentionally deterministic: if membership cannot be confirmed, purchase remains blocked.</p>
|
<p class="foot">This page is intentionally deterministic: if membership cannot be confirmed, purchase remains blocked. <a href="/trust">Trust page</a>.</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|||||||
130
public/trust/index.html
Normal file
130
public/trust/index.html
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>EDUT Trust</title>
|
||||||
|
<meta name="description" content="Operational trust facts for EDUT membership and marketplace infrastructure.">
|
||||||
|
<meta name="theme-color" content="#f0f4f8">
|
||||||
|
<style>
|
||||||
|
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@300;400;500&display=swap');
|
||||||
|
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
||||||
|
body {
|
||||||
|
background: #f0f4f8;
|
||||||
|
color: #2c2c2c;
|
||||||
|
font-family: 'IBM Plex Mono', 'Courier New', monospace;
|
||||||
|
min-height: 100vh;
|
||||||
|
padding: 48px 20px;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
}
|
||||||
|
.container { max-width: 980px; margin: 0 auto; }
|
||||||
|
a { color: #2c2c2c; text-underline-offset: 2px; }
|
||||||
|
.back {
|
||||||
|
display: inline-block;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
font-size: 12px;
|
||||||
|
letter-spacing: 0.12em;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
font-size: 18px;
|
||||||
|
letter-spacing: 0.16em;
|
||||||
|
text-transform: uppercase;
|
||||||
|
font-weight: 400;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
.sub {
|
||||||
|
color: #5a5f67;
|
||||||
|
font-size: 12px;
|
||||||
|
letter-spacing: 0.08em;
|
||||||
|
margin-bottom: 26px;
|
||||||
|
}
|
||||||
|
.grid {
|
||||||
|
display: grid;
|
||||||
|
gap: 14px;
|
||||||
|
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
|
||||||
|
margin-bottom: 14px;
|
||||||
|
}
|
||||||
|
.card {
|
||||||
|
border: 1px solid #d0d5db;
|
||||||
|
background: #f8fafc;
|
||||||
|
padding: 14px;
|
||||||
|
}
|
||||||
|
.label {
|
||||||
|
font-size: 11px;
|
||||||
|
letter-spacing: 0.1em;
|
||||||
|
text-transform: uppercase;
|
||||||
|
color: #6a7179;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
.line {
|
||||||
|
font-size: 12px;
|
||||||
|
line-height: 1.7;
|
||||||
|
color: #454b54;
|
||||||
|
}
|
||||||
|
.mono { word-break: break-all; }
|
||||||
|
.status {
|
||||||
|
display: inline-block;
|
||||||
|
margin-top: 8px;
|
||||||
|
padding: 3px 8px;
|
||||||
|
font-size: 10px;
|
||||||
|
letter-spacing: 0.1em;
|
||||||
|
text-transform: uppercase;
|
||||||
|
border: 1px solid #c2c8d0;
|
||||||
|
color: #5a616a;
|
||||||
|
}
|
||||||
|
.ok { border-color: #6f8d72; color: #3f6545; }
|
||||||
|
.warn { border-color: #99834b; color: #6d5b30; }
|
||||||
|
.log {
|
||||||
|
margin-top: 14px;
|
||||||
|
border-top: 1px solid #d0d5db;
|
||||||
|
padding-top: 12px;
|
||||||
|
font-size: 11px;
|
||||||
|
color: #616870;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<a href="/" class="back">← Back</a>
|
||||||
|
<h1>EDUT Trust</h1>
|
||||||
|
<p class="sub">Public operational facts. No hidden control plane claims.</p>
|
||||||
|
|
||||||
|
<div class="grid">
|
||||||
|
<section class="card">
|
||||||
|
<p class="label">Chain</p>
|
||||||
|
<p class="line">Network: <span class="mono">Base Mainnet</span></p>
|
||||||
|
<p class="line">Chain ID: <span class="mono">8453</span></p>
|
||||||
|
<span class="status ok">active</span>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="card">
|
||||||
|
<p class="label">Contracts</p>
|
||||||
|
<p class="line">Membership: <span class="mono">pending deployment</span></p>
|
||||||
|
<p class="line">Offer Registry: <span class="mono">pending deployment</span></p>
|
||||||
|
<p class="line">Entitlement: <span class="mono">pending deployment</span></p>
|
||||||
|
<span class="status warn">addresses pending</span>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="card">
|
||||||
|
<p class="label">Policy Snapshot</p>
|
||||||
|
<p class="line">Membership floor: <span class="mono">USD 5.00 equivalent</span></p>
|
||||||
|
<p class="line">Policy hash: <span class="mono">pending publication</span></p>
|
||||||
|
<p class="line">Updated: <span class="mono">pending deployment</span></p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="card">
|
||||||
|
<p class="label">API Health Targets</p>
|
||||||
|
<p class="line">/secret/wallet/intent</p>
|
||||||
|
<p class="line">/secret/wallet/verify</p>
|
||||||
|
<p class="line">/secret/membership/quote</p>
|
||||||
|
<p class="line">/secret/membership/confirm</p>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p class="log">This trust page is deployment-bound. Replace placeholders with signed release values from <span class="mono">docs/deployment/*.json</span> before go-live.</p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Loading…
Reference in New Issue
Block a user