Get latest playstore app version by package name¶
Summary¶
Source repository:
jef-systems/jef-playstore-backendSource SHA:
05551b4f5470d5c3ed14e1d798ab72cce3e50ca5Source run id:
30154185163Module:
PlaystoreLambda function:
jef-playstore-get-latest-app-version-by-package-nameHTTP method:
GETInvocation mode:
syncPackage mode:
no-packageAPI category:
Playstore Complex Sync No Package GET APIsAPI path:
/playstore/complex-sync-no-packages/jef-playstore-get-latest-app-version-by-package-nameEndpoint URL:
https://api.jefoffice.com/playstore/complex-sync-no-packages/jef-playstore-get-latest-app-version-by-package-nameDocumentation 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 queries the JEF Playstore S3 release folder and returns the latest APK version for a package name.
Payload Example¶
{
"package_name": "com.jef.playstore",
"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,}$"
},
"build_type": {
"type": "S",
"required": false,
"regex": "^(debug|release)$"
}
}
},
"notes": [
"Input is received from GET query parameters, not a JSON request body.",
"package_name maps directly to the S3 folder under github-artifacts.",
"build_type is optional; Android production callers should explicitly request release.",
"The newest semantic version is returned only after full object hash, ZIP header, signing block, signer certificate, path, and S3 metadata verification."
]
}
Response Schema¶
{
"root": {
"type": "M",
"required": true,
"attributes": {
"is_accepted": {
"type": "BOOL",
"required": true
},
"exists": {
"type": "BOOL",
"required": true
},
"latest_version_found": {
"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,
"attributes": {},
"additional_properties": true
},
"available_versions": {
"type": "L",
"required": false,
"items": {
"type": "S",
"required": false
}
},
"invalid_version_folders": {
"type": "L",
"required": false,
"items": {
"type": "S",
"required": false
}
},
"skipped_missing_apk_versions": {
"type": "L",
"required": false,
"items": {
"type": "S",
"required": false
}
},
"skipped_invalid_releases": {
"type": "L",
"required": false,
"items": {
"type": "M",
"required": false,
"attributes": {
"version": {
"type": "S",
"required": true
},
"object_key": {
"type": "S",
"required": true
},
"failure_code": {
"type": "S",
"required": true
},
"failure_reason": {
"type": "S",
"required": true
},
"build_type": {
"type": "S",
"required": false
},
"expected": {
"type": "S",
"required": false
},
"actual": {
"type": "S",
"required": false
},
"missing_metadata": {
"type": "L",
"required": false,
"items": {
"type": "S",
"required": false
}
}
}
}
},
"failure_code": {
"type": "S",
"required": false
},
"failure_reason": {
"type": "S",
"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-get-latest-app-version-by-package-name"
PowerShell curl¶
curl.exe -X GET "https://api.jefoffice.com/playstore/complex-sync-no-packages/jef-playstore-get-latest-app-version-by-package-name"