publ betaReference (MCP guide)
Open publ console

publ Reference

channel_admin_app_release

See the current correction and older-server guidance before preparing new inputs; keep existing task inputs unchanged during recovery.

The integration retains this PWA contract.

Compose the source Channel administration app's initial release: validate the selected channel and prerequisites, optionally upload an original icon, submit one release request, then observe stored progress. This is not a plan purchase or an installed-app verification operation.

The selected channel requires OWNER or DELEGATEE without an additional named fine permission. Creator/account credentials cannot substitute. Hosted clients need the exact authorized channel resource. The tool's idempotent annotation does not authorize replaying uncertain effects with a different request ID.

Input

Field Meaning
channelCode Required exact selected channel code, string length 1–512; the parser also rejects ., .., slashes, backslashes and control characters
requestId Required stable 8–80 character ID using letters, digits, underscores or hyphens
expectedRevision Required 64-character lowercase SHA256 revision from channel_admin_app_get
confirmation Required literal RELEASE_ADMIN_APP
iconFile Optional strict object with filename and canonical base64 of original PNG/JPEG/WebP/UTF-8 SVG bytes
dryRun Optional boolean, default false; validates without effects or journal

The input object is strict; unknown fields are rejected. The exported schema does not express every channel-code or image-byte refinement.

{
  "channelCode":"selected-channel-code",
  "requestId":"admin-app-release-001",
  "expectedRevision":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  "confirmation":"RELEASE_ADMIN_APP",
  "dryRun":true
}

Replace the example revision with the fresh observed value. The same requestId must retain its original inputs, including expectedRevision and file bytes. Changing dryRun from true to false is allowed because a dry run stores no task.

Only an observed NOT_RELEASED record may dispatch. Missing address is checked before the plan and points to /channels/{channelCode}/publish/settings. A known ineligible or unknown plan points to /channels/{channelCode}/plan/home. These are human prerequisite handoffs with zero release effects. Other PWA states and unavailable records point to preferences/ch-admin-app. One result contains one relevant canonical console destination, never a generic console home.

Omit iconFile to use the observed PWA icon, falling back to the channel icon, with the source ?ver= cache suffix removed. A custom file must have a matching basename/extension and canonical base64, at most 1,000,000 decimal bytes. No local paths, data URLs, arbitrary icon URLs, app-name edits or credentials. filename must be 1–240 characters without directory separators, colon or control characters, and end in .png, .jpg, .jpeg, .webp or .svg. Prefer lowercase extensions: the registered parser is case-insensitive but its exported pattern omits that flag. base64 must be 4–1,333,336 characters and round-trip to the same canonical encoding of nonempty original bytes. Whitespace or a data-URL prefix is rejected. The bridge checks bounded image/container structure, without rendering, resizing or external-reference fetching. Resource gateway, bucket and region must be configured by the host for a custom icon, including its dry run; using the observed default icon does not require that upload configuration. Original bytes and checksum bind the upload.

Inputs

This tool takes no input fields.

Results and recovery

PWA_RELEASE_DRY_RUN is a plan without grant, upload, release or journal. An acknowledged release alone does not prove completion. INITIALIZING or an unmatched readback stays pending. PWA_RELEASE_OBSERVED confirms a repeated RELEASED record with the expected channel/icon. It does not prove installation, public behavior, exclusive causality or backend transaction atomicity.

REVISION_CONFLICT rejects a stale initial revision. PWA_RECORD_UNAVAILABLE, PWA_ALREADY_RELEASED, PWA_INITIALIZING, PWA_ADDRESS_REQUIRED, PWA_PLAN_REQUIRED and PWA_PLAN_UNVERIFIED are action-required prerequisite outcomes, not completed releases. INVALID_PWA_ICON identifies failed byte validation. A dispatched request that fails acknowledgement may return an error with the preserved task and phase; do not interpret that error as proof that nothing happened.

Use the returned taskId with taskType channel-admin-app-release. Both task_status and task_resume are observational for this task type: they never send grants, uploads or release requests. An untouched prepared task or acknowledged upload can proceed only by repeating the identical channel_admin_app_release call. Dispatched effects are durably recorded before sending and never replayed after uncertainty. Unknown grant/upload acknowledgement requires operator inspection; never work around it with a new requestId.

Saved phase Permitted continuation
prepared Repeat the original release call to start remaining effects after current context and record checks.
grant-sent / upload-sent Keep the task and inspect the uncertain upload; neither original recall nor status/resume repeats the dispatched stage.
uploaded Repeat the original release call to submit the still-unsent release; the acknowledged object is reused.
release-sent Observe only. INITIALIZING, absent or mismatched state stays unconfirmed; a repeated matching RELEASED record can complete the task.
done Return stored historical completion without a fresh PWA observation or current console destination.

Observation may persist a locally reconciled completion; it does not issue a publ release or upload. REQUEST_ID_CONFLICT rejects changed original inputs; TASK_CONTEXT_CHANGED rejects an inconsistent saved journal. Preserve the task for inspection instead of deleting it to bypass either guard.

Completed replay is historical, verification.confirmed:false and has no fresh console destination; use channel_admin_app_get for current state. Context, actor, address, plan and original input remain bound. The hosted channel resource also checks the saved task's exact channel.

Temporary upload credentials stay in memory. Original file bytes remain in the private task journal for recovery; the host must manage access and retention. They are not returned in results. Uploaded objects may remain unused if later checks fail. No rollback, object cleanup, re-release, rename or unpublish is provided.