Reviewed product blueprints: short JSON summaries of GraceSoft products that GraceSoft Concierge uses when a product has no content feed. Responses are not wrapped in the { data, meta } envelope; each blueprint follows product blueprint schema v1, published at /schemas/product-blueprint-1.json. The ETag is the blueprint's (or the index's) hash.
GET
/v1/blueprints/index.json
Dynamic
List product blueprints
Every published blueprint, sorted by product, with its hash. The index hash changes when any published blueprint changes, is added, or is removed, and only then.
Responses
- 200 The published product blueprints. — ProductBlueprintIndex
- 304 The resource hasn't changed since the
If-None-Match ETag.
- 4XX The request can't be served, e.g.
405 for any method other than GET, HEAD, or OPTIONS. — ErrorResponse
Example
curl https://staticapi.gracesoft.dev/v1/blueprints/index.json
{
"schema": "gracesoft.product-blueprint-index/1",
"generated_at": "2026-10-31T04:39:49+08:00",
"hash": "sha256:f3faf590936df457e71dc44426ef87b399fb0505d738bbf4d43c646ef8576f35",
"blueprints": [
{
"product": "capture",
"url": "https://staticapi.gracesoft.dev/v1/blueprints/capture.json",
"version": 1,
"reviewed_at": "2026-10-28",
"hash": "sha256:5bb56c6775493336faca4f6994487e8cb5fc782fdfbb08f6e14060f0cbdaa254"
},
{
"product": "skylight",
"url": "https://staticapi.gracesoft.dev/v1/blueprints/skylight.json",
"version": 1,
"reviewed_at": "2026-10-28",
"hash": "sha256:bef98f0884286c0c3cd8e0494dbf6d18ebf3ab64826cb69429cc9b38e9cf6ca6"
}
]
}
GET
/v1/blueprints/{product}.json
Dynamic
Get a product blueprint
One published blueprint. Unpublished and unknown products return the same 404.
Parameters
| Name | In | Type | Description |
product required | path | string | The product slug, e.g. capture. |
Responses
- 200 One product blueprint. — ProductBlueprint
- 304 The resource hasn't changed since the
If-None-Match ETag.
- 404 No resource exists at this path. — ErrorResponse
Example
curl https://staticapi.gracesoft.dev/v1/blueprints/capture.json
{
"schema": "gracesoft.product-blueprint/1",
"product": "capture",
"name": "GraceSoft Capture",
"tagline": "Privacy-first forms with an inbox built in.",
"status": "live",
"published": true,
"version": 1,
"reviewed_at": "2026-10-28",
"cite_url": "https://gracesoft.dev/products/capture",
"summary": "GraceSoft Capture is a **privacy-first, security-first form builder** for contact, feedback and enquiry forms.\n\nEmbed a form on any site with no cookies and no trackers, then reply, assign and close every submission from one shared inbox. Submissions are encrypted at rest, deleted automatically after the retention period you choose, and easy to look up, export or erase for PDPA requests.\n\n- Build from a preset, or import a Google Form or CSV\n- Embed with a hosted link or an iframe under a strict Content Security Policy\n- Stop spam without puzzles for real visitors\n- Work every submission from a shared inbox",
"audience": [
"Small businesses replacing a third-party contact form",
"Teams collecting product feedback and bug reports",
"Small teams sharing one inbox for enquiries",
"… 1 more"
],
"features": [
{
"name": "Form builder with presets",
"description": "Start from a contact, enquiry, feedback, callback request or event registration preset, or a blank form. Twelve field types, including drop-downs, checkboxes, dates and links, with a live preview beside you.",
"availability": "available",
"plans": [
"free",
"pro",
"team"
]
},
{
"name": "Versioned publishing",
"description": "Edit a draft while the live form stays unchanged. Each publish creates a new version, and every submission records the version it was made against.",
"availability": "available",
"plans": [
"free",
"pro",
"team"
]
},
{
"name": "Conditional logic",
"description": "Show or hide fields based on earlier answers. Free allows one condition per field; Pro and Team allow several.",
"availability": "available",
"plans": [
"free",
"pro",
"team"
]
},
"… 15 more"
],
"not_offered": [
"Payment collection inside forms",
"File upload fields",
"Password fields in forms",
"… 2 more"
],
"plans": [
{
"key": "free",
"name": "Free",
"price": 0,
"currency": "SGD",
"interval": null,
"features": [
"3 forms",
"100 submissions a month",
"1 member",
"… 2 more"
],
"max_members": 1
},
{
"key": "pro",
"name": "Pro",
"price": 12,
"currency": "SGD",
"interval": "month",
"features": [
"25 forms",
"2,000 submissions a month",
"1 member",
"… 2 more"
],
"max_members": 1,
"note": "Also available yearly at 120."
},
{
"key": "team",
"name": "Team",
"price": 39,
"currency": "SGD",
"interval": "month",
"features": [
"Unlimited forms",
"10,000 submissions a month",
"Up to 10 members",
"… 2 more"
],
"max_members": 10,
"note": "Also available yearly at 390."
}
],
"pricing_note": "Monthly or yearly billing. Downgrading never deletes data: premium settings are kept and switch off until you upgrade again.",
"privacy_highlights": [
"No IP addresses or browser details are stored for form visitors.",
"Embedded forms set no cookies and load no trackers or third-party scripts (Cloudflare Turnstile only when you turn it on).",
"Submissions, replies and notes are encrypted at rest.",
"… 2 more"
],
"links": {
"landing": "https://gracesoft.dev/products/capture",
"signup": "https://formscapture.gracesoft.dev/register",
"terms": "https://gracesoft.dev/legal/terms",
"privacy": "https://gracesoft.dev/legal/privacy"
},
"faq": [
{
"q": "Is there a free plan?",
"a": "Yes. Free includes 3 forms and 100 submissions a month. Pro and Team add more forms and submissions, premium design controls and, on Team, members and assignment."
},
{
"q": "Does Capture put cookies or trackers on my website?",
"a": "No. The embed sets no cookies and loads no trackers or third-party scripts. Cloudflare Turnstile loads only on forms where you turn it on."
},
{
"q": "How does Capture stop spam without a CAPTCHA?",
"a": "Every form has a honeypot, a self-hosted proof-of-work check and a minimum time to fill in. You can add Cloudflare Turnstile to a form if you want an extra check."
},
"… 3 more"
],
"changelog": [
{
"date": "2026-10-28",
"summary": "First blueprint."
}
]
}