The Content Publish API is used to view, modify, submit, and change the status of apps registered in Galaxy Store Seller Portal and provides programmatic access to the same types of functionality provided by Seller Portal.
The Content Publish API is part of the Galaxy Store Developer API. You must meet all of the requirements of the Galaxy Store Developer API including, but not limited to, creating the access token and including the access token in the authorization header of every Content Publish API call.
For more information about registering apps, app status, or using Seller Portal, refer to the Galaxy Store Seller Portal User Guide.
The following is a quick reference to the Content Publish APIs:
Every request must include authorization header parameters which specify the content type, your access token, and service account ID. See Create an Access Token for more information about how to create an access token and service account ID.
Bearer <your-access-token>
application/json
The following example shows the header used with the Content Publish APIs:
curl -X CONTENT_PUBLISH_API_REQUEST \ -H "content-type: application/json" \ -H "Authorization: Bearer <your-access-token>" \ -H "service-account-id: <your-service-account-id>"
View a list of all of the seller's registered apps.
GET /seller/contentList
Example:
curl -i -X GET \ -H "Authorization: Bearer <your-access-token>" \ -H "service-account-id: <your-service-account-id>" \ "https://devapi.samsungapps.com/seller/contentList"
[ { "contentName": "Samsung Pay", "contentId": "000001234567", "contentStatus": "REGISTERING", "standardPrice": null, "paid": "N", "modifyDate": "2021-02-23 01:26:26.0" }, { "contentName": "Samsung Health", "contentId": "000002345678", "contentStatus": "FOR_SALE", "standardPrice": "0", "paid": "N", "modifyDate": "2021-02-23 00:23:19.0" }, { "contentName": "Samsung Gallery", "contentId": "000003456789", "contentStatus": "READY_FOR_CHANGE", "standardPrice": "0", "paid": "N", "modifyDate": "2021-02-22 23:40:46.0" }, { "contentName": "Samsung Music", "contentId": "000004567890", "contentStatus": "READY_TO_PREEXAMINATION", "standardPrice": "10", "paid": "Y", "modifyDate": "2021-02-18 06:48:08.0" }, { "contentName": "SmartThings", "contentId": "000009876543", "contentStatus": "UNDER_CONTENT_REVIEW", "standardPrice": "0", "paid": "N", "modifyDate": "2020-10-06 06:44:35.0" }, { "contentName": "Galaxy Wearable", "contentId": "000008765432", "contentStatus": "CANCELED", "standardPrice": "0", "paid": "N", "modifyDate": "2020-08-11 04:40:27.0" } ]
See Failure response codes for a list of possible response codes when a request fails.
View information about one of the seller's registered apps.
GET /seller/contentInfo
curl -i -X GET \ -H "Authorization: Bearer <your-access-token>" \ -H "service-account-id: <your-service-account-id>" \ "https://devapi.samsungapps.com/seller/contentInfo?contentId=000007654321"
See the Content Publish API Reference for more information about these parameters.
[ { "contentId": "000007654321", "appTitle": "The best app ever!", "icon": "https://img.samsungapps.com/content/d33aazz11a/2021/0214/IconImage_20210214000000000.png", "iconKey": null, "contentStatus": "REGISTERING", "defaultLanguageCode": "ENG", "applicationType": "android", "longDescription": "The app that solves all your problems.", "shortDescription": "", "newFeature": "", "ageLimit": "0", "openSourceURL": "", "privatePolicyURL": "", "youTubeURL": "", "copyrightHolder": "", "supportEMail": "support@mycompany.com", "supportedSiteUrl": "", "binaryList":[ { "fileName": "App_filename.apk", "binarySeq": "1", "versionCode": "3", "versionName": "3", "packageName": "my.package.name", "nativePlatforms": null, "apiminSdkVersion": "26", "apimaxSdkVersion": null, "iapSdk": "N", "gms": "Y", "filekey": null } ], "standardPrice": "0", "paid": "N", "autoAddCountry": false, "publicationType": "01", "startPublicationDate": null, "stopPublicationDate": "2023-01-02", "usExportLaws": true, "reviewComment": null, "reviewFilename": null, "reviewFilekey": null, "edgescreen": null, "edgescreenKey": null, "edgescreenplus": null, "edgescreenplusKey": null, "notifyResult":[], "sellCountryList":[ {"countryCode": "AUT", "price": "0"}, {"countryCode": "DEU", "price": "0"}, {"countryCode": "ESP", "price": "0"}, {"countryCode": "FRA", "price": "0"}, {"countryCode": "ITA", "price": "0"}, {"countryCode": "JPN", "price": "0"}, {"countryCode": "KOR", "price": "0"}, {"countryCode": "NLD", "price": "0"}, {"countryCode": "TUR", "price": "0"} ], "supportedLanguages":["DEU", "ENG", "FRA", "ITA", "JPN", "KOR"], "addLanguage":[ { "languagecode": "DEU", "newFeature": "", "description": "The app that solves all your problems.", "appTitle": "The best app ever!", "screenshots":[ { "screenshotPath": "https://img.samsungapps.com/content/d33aazz11a/2021/0223/DEU/ScreenImage_202102230000000002.png", "screenshotKey": null, "reuseYn": false }, { "screenshotPath": "https://img.samsungapps.com/content/d33aazz11a/2021/0223/DEU/ScreenImage_2021022300000000.png", "screenshotKey": null, "reuseYn": false }, { "screenshotPath": "https://img.samsungapps.com/content/d33aazz11a/2021/0223/DEU/ScreenImage_20210223000000009.png", "screenshotKey": null, "reuseYn": false }, { "screenshotPath": "https://img.samsungapps.com/content/d33aazz11a/2021/0223/DEU/ScreenImage_202102230000000001.jpeg", "screenshotKey": null, "reuseYn": false } ] } ], "screenshots":[ { "screenshotPath": "https://img.samsungapps.com/content/d33aazz11a/2021/0218/ENG/ScreenImage_20210218000000000.png", "screenshotKey": null, "reuseYn": false }, { "screenshotPath": "https://img.samsungapps.com/content/d33aazz11a/2021/0218/ENG/ScreenImage_20210218000000001.png", "screenshotKey": null, "reuseYn": false }, { "screenshotPath": "https://img.samsungapps.com/content/d33aazz11a/2021/0218/ENG/ScreenImage_20210218000000002.png", "screenshotKey": null, "reuseYn": false }, { "screenshotPath": "https://img.samsungapps.com/content/d33aazz11a/2021/0218/ENG/ScreenImage_20210218000000003.png", "screenshotKey": null, "reuseYn": false } ], "category":[ { "name": "Others", "type": "ONE_DEPTH_CATEGORY" }, { "name": "Music", "type": "GENERAL_CATEGORY" } ], "heroImage": "https://img.samsungapps.com/content/d33aazz11a/2021/0219/ENG/CoverImage_20210219000000007.png", "heroImageKey": null } ]
Modify app information, including images, icons, and binary files, while the app is in the REGISTERING state.
To modify an app, use the response from contentInfo to create the input required for this request.
contentInfo
POST /seller/contentUpdate
See the View seller's app details successful response example for the JSON structure. See the Content Publish API Reference for more information about the request parameters.
contentId, defaultLanguageCode, paid, usExportLaws, binaryList[{binarySeq, filekey, gms}], addLanguage[{languagecode, description, appTitle}], screenshots[{reuseYn}], and sellCountry[{countryCode}] must be included in the request. See the Content Publish API Reference for more information.
contentId
defaultLanguageCode
paid
usExportLaws
binaryList[{binarySeq, filekey, gms}]
addLanguage[{languagecode, description, appTitle}]
screenshots[{reuseYn}]
sellCountry[{countryCode}]
curl -i -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer <your-access-token>" \ -H "service-account-id: <your-service-account-id>" \ -d '{"contentId": "000007654321","appTitle": "Publish API Tester","icon": null,"iconKey": "5d33bb33-9999-0000-1111-66776633dd99", "contentStatus": "REGISTERING","defaultLanguageCode": "ENG","applicationType": "android","longDescription": "test app","shortDescription": "","newFeature": "",...........}' \ "https://devapi.samsungapps.com/seller/contentUpdate"
To replace a screenshot, use the reuseYn and screenshotKey parameters. See screenshots parameters for more information.
reuseYn
screenshotKey
To add to the supportedLanguages, addLanguage, and sellCountryList parameters, append additional content to the JSON structure.
supportedLanguages
addLanguage
sellCountryList
To remove all content from the addLanguage, binaryList, screenshots, and sellCountryList parameters, leave them blank in the request (for example, "addLanguage" : ""). To keep the existing content for these parameters (neither add nor delete content), set them to null (for example, "binaryList" : "null").
binaryList
screenshots
"addLanguage" : ""
null
"binaryList" : "null"
curl -i -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer <your-access-token>" \ -H "service-account-id: <your-service-account-id>" \ -d '{ "contentId": "000007654321", "appTitle": "The best app ever!", "iconKey": "<new-icon-key>", "defaultLanguageCode": "ENG", "longDescription": "new-long-description", "shortDescription": "", "newFeature": "<new-feature>", "ageLimit": "0", "openSourceURL": "", "privatePolicyURL": "", "youTubeURL": "", "copyrightHolder": "", "supportEMail": "support@mycompany.com", "supportedSiteUrl": "", "standardPrice": "10", "paid": "Y", "publicationType": "03", "startPublicationDate": "2021-03-31 10:00:00", "stopPublicationDate": "2022-01-02", "usExportLaws": true, "reviewComment": "<new-review-comment>", "reviewFilename": null, "reviewFilekey": "<new-review-file-key>", "edgescreenKey": "<new-edge-screen-key>", "edgescreenplusKey": "<new-edge-screen-plus-key>", "notifyResult":[], "supportedLanguages":["DEU", "ENG", "FRA"], "heroImageKey": "<new-hero-Image-key>" }' \ "https://devapi.samsungapps.com/seller/contentUpdate"
curl -i -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer <your-access-token>" \ -H "service-account-id: <your-service-account-id>" \ -d '{ "contentId": "000007654321", "appTitle": "The best app ever!", "defaultLanguageCode": "ENG", "paid": "N", "sellCountryList":[ {"countryCode": "DEU", "price": "0"}, {"countryCode": "FRA", "price": "0"}, {"countryCode": "GBR", "price": "0"}, {"countryCode": "USA", "price": "0"}, {"countryCode": "<new-sell-countryCode1>", "price": "0"}, {"countryCode": "<new-sell-countryCode2>", "price": "0"}, {"countryCode": "<new-sell-countryCode3>", "price": "0"}, {"countryCode": "<new-sell-countryCode4>", "price": "0"} ], "supportedLanguages":["DEU", "ENG", "FRA"] }' \ "https://devapi.samsungapps.com/seller/contentUpdate"
curl -i -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer <your-access-token>" \ -H "service-account-id: <your-service-account-id>" \ -d '{ "contentId": "000007654321", "appTitle": "The best app ever!", "defaultLanguageCode": "ENG", "paid": "N", "screenshots":[ {"reuseYn": true}, {"screenshotKey": "<update-screenshot-2-key>", "reuseYn": false}, {"screenshotKey": "<update-screenshot-3-key>", "reuseYn": false}, {"reuseYn": true}, {"screenshotKey": "<new-screenshot-5-key>", "reuseYn": false}, {"screenshotKey": "<new-screenshot-6-key>", "reuseYn": false} ] }' \ "https://devapi.samsungapps.com/seller/contentUpdate"
curl -i -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer <your-access-token>" \ -H "service-account-id: <your-service-account-id>" \ -d '{ "contentId": "000007654321", "appTitle": "The best app ever!", "defaultLanguageCode": "ENG", "paid": "N", "addLanguage":[ { "languagecode": "<new-addLanguage-1-code>", "newFeature": "<new-addLanguage-1-code-new-feature>", "description": "<new-addLanguage-1-code-description>", "appTitle": "<new-addLanguage-1-code-title>", "screenshots":[ {"screenshotKey": "<new-addLanguage-1-screenshot-1-key>", "reuseYn": false}, {"screenshotKey": "<new-addLanguage-1-screenshot-2-key>", "reuseYn": false}, {"screenshotKey": "<new-addLanguage-1-screenshot-3-key>", "reuseYn": false}, {"screenshotKey": "<new-addLanguage-1-screenshot-4-key>", "reuseYn": false} ] }, { "languagecode": "<new-addLanguage-2-code>", "newFeature": "<new-addLanguage-2-code-new-feature>", "description": "<new-addLanguage-2-code-description>", "appTitle": "<new-addLanguage-2-code-title>", "screenshots":[ {"screenshotKey": "<new-addLanguage-2-screenshot-1-key>", "reuseYn": false}, {"screenshotKey": "<new-addLanguage-2-screenshot-2-key>", "reuseYn": false}, {"screenshotKey": "<new-addLanguage-2-screenshot-3-key>", "reuseYn": false}, {"screenshotKey": "<new-addLanguage-2-screenshot-4-key>", "reuseYn": false} ] } ] }' \ "https://devapi.samsungapps.com/seller/contentUpdate"
curl -i -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer <your-access-token>" \ -H "service-account-id: <your-service-account-id>" \ -d '{ "contentId": "000007654321", "appTitle": "The best app ever!", "defaultLanguageCode": "ENG", "paid": "N", "binaryList":[ { "fileName": "MyApp.apk", "binarySeq": "1", "versionCode": "3", "versionName": "3", "packageName": "com.my.app20210330", "nativePlatforms": null, "apiminSdkVersion": "1", "apimaxSdkVersion": null, "iapSdk": "N", "gms": "Y", "filekey": null }, { "gms": "Y", "filekey": "<new-binary-file-key>" } ] }' \ "https://devapi.samsungapps.com/seller/contentUpdate"
Status: 200 Success
{ "ctntId": "000007654321", "contentStatus": "REGISTERING", "httpStatus": "OK", "errorCode": null, "errorMsg": null }
Submit the app for review. An app must be reviewed before it is offered for sale in Galaxy Store. You can check the status of the app using contentList or contentInfo. See App Review for more information about the app review process.
contentList
Apps must be in the REGISTERING state before they can be submitted.
POST /seller/contentSubmit
curl -i -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer <your-access-token>" \ -H "service-account-id: <your-service-account-id>" \ -d '{"contentId": "000007654321"}' \ "https://devapi.samsungapps.com/seller/contentSubmit"
Status: 204 No Content
Change the status of an app registered in Seller Portal. You can distribute, suspend, or terminate an app.
POST /seller/contentStatusUpdate
curl -i -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer <your-access-token>" \ -H "service-account-id: <your-service-account-id>" \ -d '{"contentId": "000007654321", "contentStatus" :"FOR_SALE"}' \ "https://devapi.samsungapps.com/seller/contentStatusUpdate"
Generate a session ID required to upload a file. The session ID is unique and valid for 24 hours.
POST /seller/createUploadSessionId
curl -i -X POST \ "https://devapi.samsungapps.com/seller/createUploadSessionId"
Status: 200 OK
{ "url": "https://seller.samsungapps.com/galaxyapi/fileUpload", "sessionId": "d7ca6869-128e-4bfb-a56d-674d77f08848" }
Upload files required for app submission or for updating an app.
The fileKey in this response is used in the modify app data request.
fileKey
Refer to App Registration - Information on app-related image/video registration for image file requirements.
POST /seller/fileUpload
curl -i -X POST \ -H "Content-Type:multipart/form-data" \ -H "Authorization: Bearer <your-access-token>" \ -H "service-account-id: <your-service-account-id>" \ -F "file=@\"./ICON_512x512.png\";type=image/png;filename=\"ICON_512x512.png\"" \ -F "sessionId=d7ca6869-128e-4bfb-a56d-674d77f08848" \ "https://seller.samsungapps.com/galaxyapi/fileUpload"
{ "fileKey": "5d33cb93-b399-41c0-9c41-667946736d09", "fileName": "ICON_512x512.png", "fileSize": "86265", "errorCode": null, "errorMsg": null }
The following are response codes you may see when the request fails.
error code
3001
4106
4125
4008
4105
4129
7001
7002