.. AUTO-GENERATED FILE. DO NOT EDIT. Generate playstore CloudFront download URL by package name ========================================================== Summary ------- - **Source repository:** ``jef-systems/jef-playstore-backend`` - **Source SHA:** ``eb793550a12d9e11927e529c3cd85e40d94c5421`` - **Source run id:** ``29434262589`` - **Module:** ``Playstore`` - **Lambda function:** ``jef-playstore-generate-cloudfront-download-url-by-package-name`` - **HTTP method:** ``GET`` - **Invocation mode:** ``sync`` - **Package mode:** ``no-package`` - **API category:** ``Playstore Complex Sync No Package GET APIs`` - **API path:** ``/playstore/complex-sync-no-packages/jef-playstore-generate-cloudfront-download-url-by-package-name`` - **Endpoint URL:** ``https://api.jefoffice.com/playstore/complex-sync-no-packages/jef-playstore-generate-cloudfront-download-url-by-package-name`` - **Documentation scope:** ``lambda-complex-sync-no-packages`` Synchronous Lambda Complex Rule ------------------------------- This API is documented as a synchronous Lambda complex no-package API. API Gateway waits for the Lambda result and returns the final Lambda response. Description ----------- GET endpoint that verifies a JEF Playstore APK release in S3 and returns its CloudFront download URL. Payload Example --------------- .. code-block:: json { "package_name": "com.jef.playstore", "version": "1.0.0", "build_type": "release" } Payload Schema -------------- .. code-block:: json { "root": { "type": "M", "required": true, "attributes": { "package_name": { "type": "S", "required": true, "regex": "^[a-zA-Z][a-zA-Z0-9_]*(?:[.][a-zA-Z][a-zA-Z0-9_]*){1,}$" }, "version": { "type": "S", "required": false, "regex": "^[0-9]+[.][0-9]+[.][0-9]+(?:-[A-Za-z0-9.-]+)?(?:[+][A-Za-z0-9.-]+)?$" }, "build_type": { "type": "S", "required": false, "regex": "^(debug|release)$" } } }, "notes": [ "Input is received from GET query parameters, not a JSON request body.", "version is optional; when omitted, the latest fully verified semantic version is selected.", "build_type=release never falls back to debug.apk.", "A CloudFront URL is generated only after the selected S3 APK passes full hash and APK signing-block verification." ] } Response Schema --------------- .. code-block:: json { "root": { "type": "M", "required": true, "attributes": { "is_accepted": { "type": "BOOL", "required": true }, "exists": { "type": "BOOL", "required": true }, "download_url_generated": { "type": "BOOL", "required": true }, "ok": { "type": "BOOL", "required": false }, "retryable": { "type": "BOOL", "required": false }, "message_type": { "type": "S", "required": true }, "message": { "type": "S", "required": true }, "operation": { "type": "S", "required": true }, "status_code": { "type": "N", "required": true }, "package_name": { "type": "S", "required": false }, "latest_version": { "type": "S", "required": false }, "version": { "type": "S", "required": false }, "version_name": { "type": "S", "required": false }, "version_code": { "type": "N", "required": false }, "build_type": { "type": "S", "required": false }, "requested_build_type": { "type": "S", "required": false }, "apk_sha256": { "type": "S", "required": false }, "sha256": { "type": "S", "required": false }, "apk_size_bytes": { "type": "N", "required": false }, "content_length": { "type": "N", "required": false }, "size": { "type": "N", "required": false }, "content_type": { "type": "S", "required": false }, "signing_certificate_sha256": { "type": "S", "required": false }, "signing_certificate_source": { "type": "S", "required": false }, "signing_scheme": { "type": "S", "required": false }, "object_key": { "type": "S", "required": false }, "canonical_object_key": { "type": "S", "required": false }, "object_file_name": { "type": "S", "required": false }, "s3_uri": { "type": "S", "required": false }, "bucket_name": { "type": "S", "required": false }, "bucket_prefix": { "type": "S", "required": false }, "package_prefix": { "type": "S", "required": false }, "etag": { "type": "S", "required": false }, "cache_control": { "type": "S", "required": false }, "last_modified": { "type": "S", "required": false }, "metadata_verified": { "type": "BOOL", "required": false }, "apk_magic_verified": { "type": "BOOL", "required": false }, "apk_format_verified": { "type": "BOOL", "required": false }, "apk_sha256_verified": { "type": "BOOL", "required": false }, "apk_signing_block_verified": { "type": "BOOL", "required": false }, "apk_magic_hex": { "type": "S", "required": false }, "metadata": { "type": "M", "required": false, "attributes": { "package_name": { "type": "S", "required": false }, "version": { "type": "S", "required": false }, "version_code": { "type": "S", "required": false }, "build_type": { "type": "S", "required": false }, "apk_sha256": { "type": "S", "required": false }, "signing_certificate_sha256": { "type": "S", "required": false } } }, "s3_metadata": { "type": "M", "required": false }, "available_versions": { "type": "L", "required": false }, "invalid_version_folders": { "type": "L", "required": false }, "skipped_missing_apk_versions": { "type": "L", "required": false }, "skipped_invalid_releases": { "type": "L", "required": false }, "failure_code": { "type": "S", "required": false }, "failure_reason": { "type": "S", "required": false }, "is_latest": { "type": "BOOL", "required": false }, "selected_reason": { "type": "S", "required": false }, "download_url": { "type": "S", "required": false }, "cloudfront_url": { "type": "S", "required": false }, "canonical_cloudfront_url": { "type": "S", "required": false }, "cloudfront_domain": { "type": "S", "required": false }, "requested_object_file": { "type": "S", "required": false }, "missing_object_keys": { "type": "L", "required": false } } }, "notes": [ "A success response is emitted only after the complete S3 object SHA-256 matches publication metadata.", "The APK ZIP header and APK v2/v3/v3.1 signing block are parsed using Python standard-library code.", "signing_certificate_sha256 is derived from the first signer certificate in the APK signing block and cross-checked with S3 metadata when present.", "metadata_verified, apk_magic_verified, apk_format_verified, apk_sha256_verified, and apk_signing_block_verified are never true when their verification step was skipped.", "When discovering the latest release, invalid newer releases are recorded in skipped_invalid_releases and the next semantic version is evaluated." ] } CMD curl -------- .. code-block:: bat curl.exe -X GET "https://api.jefoffice.com/playstore/complex-sync-no-packages/jef-playstore-generate-cloudfront-download-url-by-package-name" PowerShell curl --------------- .. code-block:: powershell curl.exe -X GET "https://api.jefoffice.com/playstore/complex-sync-no-packages/jef-playstore-generate-cloudfront-download-url-by-package-name"