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

{
  "package_name": "com.jef.playstore",
  "version": "1.0.0",
  "build_type": "release"
}

Payload Schema

{
  "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

{
  "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

curl.exe -X GET "https://api.jefoffice.com/playstore/complex-sync-no-packages/jef-playstore-generate-cloudfront-download-url-by-package-name"

PowerShell curl

curl.exe -X GET "https://api.jefoffice.com/playstore/complex-sync-no-packages/jef-playstore-generate-cloudfront-download-url-by-package-name"