Social Instagram Publish Migration
Overview
SocialInstagramPublishModule is a retired compatibility module. Version 2.0.0 is hidden from Workflow Studio and never resolves an OpenAPI server, reads an IntegrationAccount, creates a media container, publishes media, fetches a permalink, or changes workflow state.
The former implementation duplicated InstagramPublishModule, exposed zero catalog inputs and outputs, treated a two-write provider sequence as idempotent, and allowed an attached OpenAPI specification to replace the Meta Graph base URL before transmitting the bound access token. Its synchronous execution path could also return without performing the documented publish. The class and Spring bean names remain unchanged so saved tasks can be identified and migrated without restoring those behaviors.
Usage
Do not add SocialInstagramPublishModule to a new workflow. For an existing task:
- Record the intended media type, source URL, caption, and publication timing without copying credentials.
- Remove any attached provider OpenAPI specification or custom server override from the migration plan.
- Review the currently deployed
InstagramPublishModulemetadata and approved provider documentation before choosing it as the replacement. - Create a new replacement task and bind a least-privilege READY Meta
IntegrationAccountthrough its documented secure fields. - Test one authorized non-production publication and reconcile provider state before retrying any ambiguous write.
- Remove the retired task only after the replacement is verified.
Inputs
The compatibility shell recognizes four legacy migration hints but does not parse, log, fetch, store, or transmit them.
| Name | Type | Required | Version 2.0.0 behavior |
|---|---|---|---|
media_type | string | No | Ignored; no IMAGE or VIDEO operation is selected. |
source_url | string | No | Ignored; the URL is never fetched or sent to a provider. |
caption | string | No | Ignored; the text is never logged or transmitted. |
schedule_time | string | No | Ignored; no container or scheduled publication is created. |
Outputs
Direct execution always returns:
{
"status": "error",
"error": {
"code": "MODULE_RETIRED",
"message": "SocialInstagramPublishModule is retired; migrate deliberately to InstagramPublishModule",
"retryable": false,
"migrationTargets": ["InstagramPublishModule"],
"requiredAction": "Create a reviewed replacement task; do not copy raw credentials or OpenAPI server overrides"
}
}
The response never contains media URLs, captions, access tokens, account identifiers, provider responses, container IDs, media IDs, permalinks, or exception text.
IntegrationAccount Requirements
The retired module accepts, resolves, and decrypts no IntegrationAccount. No account field re-enables provider access.
For a replacement, follow that module's current documented account contract. Keep the Meta access token and Instagram Business account identifier in encrypted account fields, require the documented readiness state, and use the minimum content-publishing scopes. Never copy a token into workflow input, an OpenAPI server definition, a URL, a log, or a migration note.
Configuration
Direct metadata lookup retains four advanced legacy fields so old task shapes remain recognizable:
| Field | Legacy purpose | Version 2.0.0 behavior |
|---|---|---|
media_type | Selected image or video publishing. | Never selects an operation. |
source_url | Pointed Meta at a public media URL. | Never fetched or transmitted. |
caption | Supplied post text. | Never logged or transmitted. |
schedule_time | Requested a later publication. | Never parsed or scheduled. |
The module is discoverable=false; Workflow Studio does not offer it for new tasks.
Operations
Version 2.0.0 implements one deterministic compatibility operation: reject direct execution with MODULE_RETIRED and name InstagramPublishModule as the migration candidate.
Migration is not automatic. The replacement is a separate module with its own deployed metadata, account contract, validation, and non-idempotent provider-write boundary. A source merge does not prove that the replacement version is deployed in Workflow Studio.
Errors and Failure Modes
| Condition | Result | Recovery |
|---|---|---|
| Retired task executes | MODULE_RETIRED, not retryable | Create and test a reviewed replacement task. |
| Legacy OpenAPI server is present | Ignored; no request or token transmission occurs | Do not copy the server override to the replacement. |
| Replacement validation fails | No provider request should be sent | Correct the named media, identity, or account field. |
| Replacement write is ambiguous | Provider commit state is unknown | Inspect Instagram state before one deliberate retry. |
| Live metadata still reports v1 | Runtime deployment has not caught up with source | Keep the task disabled until the normal backend release. |
Example
Legacy task configuration:
{
"media_type": "IMAGE",
"source_url": "https://cdn.example.com/releases/launch.png",
"caption": "Release notes are live"
}
Expected result:
{
"status": "error",
"error": {
"code": "MODULE_RETIRED",
"retryable": false,
"migrationTargets": ["InstagramPublishModule"]
}
}
No media container or Instagram post is created. The operator must build and verify a separate replacement task.
Notes
- Pagination: not applicable; the compatibility shell performs no provider read.
- Limits: legacy values are ignored rather than truncated, rendered, stored, or transmitted.
- Idempotency: repeated execution returns the same error shape and has no side effect.
- API constraints: no Meta Graph API version, server, operation ID, or response is resolved.
- Destructive behavior: none. The shell cannot create, schedule, publish, update, or delete media.
- Observability: one bounded warning records that execution was blocked; inputs and credentials are omitted.
- Runtime boundary: merged source, published documentation, public launch content, and deployed
/v1/modules/metadataare separate states.