Sharelife API v1 (Public + Member Surface)
This page documents only the public catalog surface and member-scoped mutation surface. Privileged internal endpoints are intentionally omitted from the public reference.
Scope
- Public read APIs: market discovery, detail, compare, health, and capability discovery.
- Member APIs: login, trial, install, upload, profile-pack import/submission, local-installation management, task recovery, transfer-job visibility, and owner-scoped submission queries/downloads.
- Owner binding: when auth is enabled, member routes can only act on the authenticated
user_id.
Public + Member Application Methods
get_preferences(user_id)set_preference_mode(user_id, mode)set_preference_observe(user_id, enabled)submit_template(user_id, template_id, version)submit_template_package(user_id, template_id, version, filename, content_base64)list_templates()get_template_detail(template_id)request_trial(user_id, session_id, template_id)get_trial_status(user_id, session_id, template_id)install_template(user_id, session_id, template_id)generate_prompt_bundle(template_id)generate_package(template_id)list_member_tasks(user_id, limit=50)refresh_member_tasks(user_id, limit=50)list_member_transfer_jobs(user_id, direction="", status="", limit=50)refresh_member_transfer_jobs(user_id, direction="", status="", limit=50)list_profile_pack_catalog(pack_query="", pack_type="", risk_level="", review_label="", warning_flag="", featured="")get_profile_pack_catalog_detail(pack_id)compare_profile_pack_catalog(pack_id, selected_sections=None)member_import_profile_pack(user_id, filename, content_base64)member_list_profile_pack_imports(user_id, limit=50)submit_profile_pack(user_id, artifact_id, submit_options=None)list_member_installations(user_id, limit=50)refresh_member_installations(user_id, limit=50)uninstall_member_installation(user_id, template_id)member_list_submissions(user_id, status="", template_query="", risk_level="", review_label="", warning_flag="")member_get_submission_detail(user_id, submission_id)member_get_submission_package(user_id, submission_id, idempotency_key="")member_list_profile_pack_submissions(user_id, status="", pack_query="", pack_type="", risk_level="", review_label="", warning_flag="")member_get_profile_pack_submission_detail(user_id, submission_id)member_withdraw_profile_pack_submission(user_id, submission_id)member_get_profile_pack_submission_export(user_id, submission_id)
Public + Member HTTP Routes
Public routes:
GET /api/auth-infoPOST /api/loginGET /api/healthGET /api/ui/capabilities?page_mode=auto|member|marketGET /api/templatesGET /api/templates/detail?template_id=...GET /api/profile-pack/catalogGET /api/profile-pack/catalog/detail?pack_id=...GET /api/profile-pack/catalog/compare?pack_id=...&selected_sections=plugins,providersGET /api/profile-pack/catalog/insights
Member routes:
GET /api/preferences?user_id=...POST /api/preferences/modePOST /api/preferences/observePOST /api/trialGET /api/trial/status?user_id=...&session_id=...&template_id=...POST /api/templates/installPOST /api/templates/submitGET /api/templates/package/download?template_id=...POST /api/templates/promptPOST /api/templates/packageGET /api/member/tasks?user_id=...POST /api/member/tasks/refreshGET /api/member/transfers?user_id=...&direction=download&status=...POST /api/member/transfers/refreshPOST /api/profile-pack/submitPOST /api/member/profile-pack/importsGET /api/member/profile-pack/imports?user_id=...GET /api/member/installations?user_id=...POST /api/member/installations/refreshPOST /api/member/installations/uninstallGET /api/member/submissions?user_id=...&status=...&template_id=...&risk_level=...GET /api/member/submissions/detail?user_id=...&submission_id=...GET /api/member/submissions/package/download?user_id=...&submission_id=...GET /api/member/profile-pack/submissions?user_id=...&status=...&pack_id=...&pack_type=...GET /api/member/profile-pack/submissions/detail?user_id=...&submission_id=...POST /api/member/profile-pack/submissions/withdrawGET /api/member/profile-pack/submissions/export/download?user_id=...&submission_id=...
Public Upload / Install Payload Notes
POST /api/templates/installinstall_options.preflight: boolinstall_options.force_reinstall: boolinstall_options.source_preference: auto|uploaded_submission|generated
POST /api/templates/submitpackage_name + package_base64for direct package uploadupload_options.scan_mode: strict|balancedupload_options.visibility: community|privateupload_options.replace_existing: boolupload_options.idempotency_keyorIdempotency-Keyheader for safe retry
POST /api/profile-pack/submitartifact_idis required on the current branchsubmit_options.pack_type: bot_profile_pack|extension_packsubmit_options.selected_sections: string[]submit_options.redaction_mode: exclude_secrets|exclude_provider|include_provider_no_key|include_encrypted_secretssubmit_options.replace_existing: boolsubmit_options.idempotency_keyorIdempotency-Keyheader for safe retry
POST /api/member/profile-pack/importsfilename + content_base64creates a member-owned import draft before community submission
GET /api/member/submissions/package/download- optional
Idempotency-Keyheader de-duplicates repeated download job creation - success responses can include
X-Sharelife-Transfer-Job-IdandX-Sharelife-Transfer-Status
- optional
- Direct template package upload is capped at
20 MiBand returnspackage_too_largeif exceeded.
Auth Badge Matrix (HTTP)
| Route | Required Role | Deny Behavior |
|---|---|---|
GET /api/ui/capabilities | public | N/A |
POST /api/login | public | 401 invalid_credentials or 429 rate_limited |
GET /api/templates | public | N/A |
GET /api/templates/detail | public | N/A |
GET /api/profile-pack/catalog | public | N/A |
GET /api/profile-pack/catalog/detail | public | N/A |
GET /api/profile-pack/catalog/compare | public | N/A |
GET /api/profile-pack/catalog/insights | public | N/A |
POST /api/trial | member or anonymous allowlist | 401 unauthorized or 403 permission_denied |
GET /api/trial/status | member or anonymous allowlist | 401 unauthorized or 403 permission_denied |
POST /api/templates/install | member or anonymous allowlist | 401 unauthorized or 403 permission_denied |
GET /api/templates/package/download | member or anonymous allowlist | 401 unauthorized or 403 permission_denied |
GET /api/notifications | member or anonymous allowlist | 401 unauthorized or 403 permission_denied |
GET /api/preferences | member or anonymous allowlist | 401 unauthorized or 403 permission_denied |
POST /api/preferences/mode | member or anonymous allowlist | 401 unauthorized or 403 permission_denied |
POST /api/preferences/observe | member or anonymous allowlist | 401 unauthorized or 403 permission_denied |
GET /api/member/tasks | member or anonymous allowlist | 401 unauthorized or 403 permission_denied |
POST /api/member/tasks/refresh | member or anonymous allowlist | 401 unauthorized or 403 permission_denied |
GET /api/member/transfers | member | 401 unauthorized or 403 permission_denied |
POST /api/member/transfers/refresh | member | 401 unauthorized or 403 permission_denied |
POST /api/templates/submit | member | 401 unauthorized or 403 permission_denied |
POST /api/profile-pack/submit | member | 401 unauthorized or 403 permission_denied |
POST /api/member/profile-pack/imports | member | 401 unauthorized or 403 permission_denied |
GET /api/member/profile-pack/imports | member | 401 unauthorized or 403 permission_denied |
GET /api/member/installations | member or anonymous allowlist | 401 unauthorized or 403 permission_denied |
POST /api/member/installations/refresh | member or anonymous allowlist | 401 unauthorized or 403 permission_denied |
POST /api/member/installations/uninstall | member or anonymous allowlist | 401 unauthorized or 403 permission_denied |
GET /api/member/submissions | member | 401 unauthorized or 403 permission_denied |
GET /api/member/submissions/detail | member | 401 unauthorized or 403 permission_denied |
GET /api/member/submissions/package/download | member | 401 unauthorized or 403 permission_denied |
GET /api/member/profile-pack/submissions | member | 401 unauthorized or 403 permission_denied |
GET /api/member/profile-pack/submissions/detail | member | 401 unauthorized or 403 permission_denied |
POST /api/member/profile-pack/submissions/withdraw | member | 401 unauthorized or 403 permission_denied |
GET /api/member/profile-pack/submissions/export/download | member | 401 unauthorized or 403 permission_denied |
All role-deny responses are expected to return error.code=permission_denied.
Error Model
permission_denied: token role or owner binding blocks the action.unauthorized/invalid_credentials: login is required or credentials are wrong.package_too_large: uploaded package exceeds the20 MiBlimit.template_not_installable: install was requested for a template that is not installable.profile_pack_source_required: profile-pack community submit was called withoutartifact_id.idempotency_key_conflict: the same idempotency key was reused across a different submission scope.prompt_injection_detected: scan flagged risky content; current behavior is labeling and review escalation, not auto-delete.
Runtime Notes
get_trial_status()andGET /api/trial/statusreportnot_started|active|expiredplusttl_secondsandremaining_seconds.GET /api/ui/capabilitiesis intentionally readable before login so the UI can hide or disable protected controls.- If
allow_anonymous_member=true, only the configured allowlist can run without login, and requests are still pinned toanonymous_member_user_id. GET /api/templatessupports server-side filter/sort on catalog metadata, includingcategory,tag,source_channel,review_label,warning_flag,sort_by, andsort_order.- Template list/detail payloads now include
category,tags,maintainer,source_channel, and an aggregatedengagementobject for market ranking cards. - Current
engagementfields includetrial_requests,installs,prompt_generations,package_generations,community_submissions, andlast_activity_at. POST /api/templates/submitandPOST /api/profile-pack/submitboth support idempotent replay through payload options or theIdempotency-Keyheader.- Member task routes provide audit-backed upload/download recovery across page reloads.
- Member transfer routes expose transfer-job history with
attempt_count,retry_count,failure_reason, andmetadatafor download troubleshooting. - Submission package download can attach transfer-job metadata to the payload and response headers, allowing the UI to replay or poll the same logical download job safely.
- Member profile-pack imports remain member-owned drafts until they are explicitly submitted to the community queue.
POST /api/member/profile-pack/submissions/withdrawlets a member revoke a pending profile-pack submission before queue handling begins.- Member download surfaces are owner-scoped by design: a member can only download the package/export for their own submission.
- Privileged approval, apply/rollback, secret rotation, backup/restore, and featured curation flows stay outside the public documentation set.