{"apiVersion": "openeyes.nails.web.v1", "boundary": "go_live_online_pilot_authorization_completion_local_only", "collectionExecutionEnabled": false, "completionBoundary": {"acceptsApprovalEvidenceUri": true, "acceptsConfirmationRecordUri": true, "acceptsInlineApprovalEvidence": true, "acceptsInlineConfirmationRecord": true, "advancesLocalGoLiveTracker": true, "collectionExecutionEnabled": false, "deployEnabled": false, "liveCollectionEnabled": false, "mode": "online_pilot_authorization_local_files_and_audit_state", "network": false, "preparesAuthorizedSubmitPreview": true, "preparesStagingRuntimeConfigRequest": true, "productionMutations": false, "readsLocalFiles": true, "secretMaterialReturned": false, "submitEnabled": false, "uploadEnabled": false, "verifiesExternalReviewerConfirmation": true, "verifiesOnlinePilotApprovalEvidence": true, "writesLocalAuditState": true, "writesLocalFiles": true}, "completionContractPath": "/api/web/v1/plugins/nails/production-cutover:online-pilot-authorization-contract", "completionPath": "/api/web/v1/plugins/nails/production-cutover:online-pilot-authorization", "contract": {"additionalProperties": false, "approvalEvidenceInputModes": ["local_path", "inline_json", "uri"], "confirmationRecordInputModes": ["local_path", "inline_json", "uri"], "contractVersion": 1, "inputModes": ["local_path", "inline_json", "uri"], "methods": ["POST"], "name": "nails-production-cutover-online-pilot-authorization", "objectUriReader": {"acceptedSchemes": ["gs", "oss"], "bucketAllowlistEnv": ["MALIANG_NAILS_RESOURCE_BUCKETS", "NAILS_AUDIT_EVIDENCE_BUCKET", "NAILS_SOURCE_ASSETS_BUCKET", "NAILS_DESIGN_PACKAGES_BUCKET", "NAILS_PUBLIC_ASSETS_BUCKET"], "defaultMode": "local_object_uri_mirror", "gcsModeEnv": "NAILS_WEB_GCS_URI_READ_ENABLED=1", "mirrorRootField": "objectUriMirrorRoot", "payloadKind": "json"}, "optionalFields": ["approvalEvidence", "approvalEvidenceInline", "approvalEvidenceUri", "confirmationRecord", "confirmationRecordInline", "confirmationRecordUri", "objectUriMirrorRoot", "stateRoot", "payloadDigest", "outputDir", "envMode", "replace", "compactOutputFiles"], "requiredFields": ["startBundle"], "schemaDigest": "c368e261b7de5461b5bc0006424490a030de1408c09364e875be6dff6ac73de2", "schemaId": "https://openeyes.local/plugins/nails/web/v1/production-cutover-online-pilot-authorization-request.schema.json"}, "deployEnabled": false, "links": {"providerQuality": {"contractPath": "/api/web/v1/plugins/nails/production-cutover:provider-quality-contract", "method": "POST", "network": false, "path": "/api/web/v1/plugins/nails/production-cutover:provider-quality"}, "stagingHandoffRuntimeConfigRequest": {"artifact": "<startBundle>/latest-staging-handoff-runtime-config-request.json", "network": false, "nextCommand": "scripts/nails_complete_go_live_staging_handoff.py"}}, "liveCollectionEnabled": false, "localStateMutations": true, "localWrapper": {"collectionExecutionEnabled": false, "commandTemplate": "rtk python scripts/nails_complete_go_live_online_pilot_authorization.py --start-bundle <startBundle> --approval-evidence <online-pilot-approval-evidence.json> --confirmation-record <online-pilot-confirmation.json> --output-dir <outputDir>", "deployEnabled": false, "liveCollectionEnabled": false, "localStateMutations": true, "network": false, "productionMutations": false, "script": "scripts/nails_complete_go_live_online_pilot_authorization.py", "steps": ["verify approved online-pilot evidence", "verify external reviewer confirmation record", "write the approved local online-pilot authorization ledger entry", "prepare authorized submit preview and staging runtime config request", "advance online_pilot_authorization"], "submitEnabled": false, "uploadEnabled": false}, "method": "GET", "network": false, "ok": true, "pluginId": "nails", "productionMutations": false, "route": "/api/web/v1/plugins/nails/production-cutover:online-pilot-authorization-contract", "schema": {"$id": "https://openeyes.local/plugins/nails/web/v1/production-cutover-online-pilot-authorization-request.schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "allOf": [{"oneOf": [{"not": {"anyOf": [{"required": ["approvalEvidenceInline"]}, {"required": ["approvalEvidenceUri"]}]}, "required": ["approvalEvidence"]}, {"not": {"anyOf": [{"required": ["approvalEvidence"]}, {"required": ["approvalEvidenceUri"]}]}, "required": ["approvalEvidenceInline"]}, {"not": {"anyOf": [{"required": ["approvalEvidence"]}, {"required": ["approvalEvidenceInline"]}]}, "required": ["approvalEvidenceUri"]}]}, {"oneOf": [{"not": {"anyOf": [{"required": ["confirmationRecordInline"]}, {"required": ["confirmationRecordUri"]}]}, "required": ["confirmationRecord"]}, {"not": {"anyOf": [{"required": ["confirmationRecord"]}, {"required": ["confirmationRecordUri"]}]}, "required": ["confirmationRecordInline"]}, {"not": {"anyOf": [{"required": ["confirmationRecord"]}, {"required": ["confirmationRecordInline"]}]}, "required": ["confirmationRecordUri"]}]}], "properties": {"approvalEvidence": {"description": "Approved online-pilot evidence JSON returned by the external approval process.", "minLength": 1, "type": "string"}, "approvalEvidenceInline": {"description": "Inline approved online-pilot evidence returned by the external approval process. The API materializes it under the start bundle before running the local completion wrapper.", "type": ["array", "object"]}, "approvalEvidenceUri": {"description": "Stable gs:// or oss:// URI for approved online-pilot evidence. The URI bucket is restricted by the runtime object URI allowlist.", "minLength": 1, "type": "string"}, "compactOutputFiles": {"default": false, "description": "Write compact JSON artifacts when true.", "type": "boolean"}, "confirmationRecord": {"description": "External reviewer confirmation record binding approval evidence to the provider-quality bridge payload digest.", "minLength": 1, "type": "string"}, "confirmationRecordInline": {"description": "Inline external reviewer confirmation record binding approval evidence to the provider-quality bridge payload digest. The API materializes it under the start bundle before running the local completion wrapper.", "type": "object"}, "confirmationRecordUri": {"description": "Stable gs:// or oss:// URI for the external reviewer confirmation record. The URI bucket is restricted by the runtime object URI allowlist.", "minLength": 1, "type": "string"}, "envMode": {"default": "process", "description": "Environment mode used by local authorization and staging handoff command templates.", "enum": ["fixture", "process"], "type": "string"}, "objectUriMirrorRoot": {"description": "Optional local object-uri mirror root used outside GCS JSON API mode. Defaults under the start bundle.", "minLength": 1, "type": "string"}, "outputDir": {"description": "Optional empty local output directory for authorization completion artifacts. When supplied it must resolve inside the start bundle.", "minLength": 1, "type": "string"}, "payloadDigest": {"description": "Optional payload digest override. Defaults to the online-pilot bridge payloadDigest from the latest provider-quality completion.", "minLength": 1, "type": "string"}, "replace": {"default": false, "description": "Allow replacing the online_pilot_authorization stage entry when advancing the local go-live tracker.", "type": "boolean"}, "startBundle": {"description": "Local go-live start bundle whose provider-quality completion prepared the online-pilot authorization request.", "minLength": 1, "type": "string"}, "stateRoot": {"description": "Optional local audit-state root inside the start bundle. Defaults to the provider-quality completion state root.", "minLength": 1, "type": "string"}}, "required": ["startBundle"], "title": "Nails Production Cutover Online Pilot Authorization Request v1", "type": "object"}, "sideEffects": "local_online_pilot_authorization_ledger_and_staging_request_files", "submitEnabled": false, "uploadEnabled": false}