Content Publish API
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:
Name | Request | Description |
---|---|---|
View seller’s app list | GET /seller/contentList | View a list of all of the seller's registered apps. |
View seller’s app details | GET /seller/contentInfo | View information about one of the seller's registered apps. |
Modify app data | POST /seller/contentUpdate | Modify app information, including images, icons, and binary files, while the app is in the REGISTERING state. |
Submit app | POST /seller/contentSubmit | Submit an app for review. |
Change app status | POST /seller/contentStatusUpdate | Change the status of an app registered in Seller Portal. |
Create file upload session ID | POST /seller/createUploadSessionId | Generate a session ID required to upload a file. |
File upload | POST /seller/fileUpload | Upload files required for app submission or for updating an app. |
Authorization header parameters
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.
Attribute | Type | Description |
---|---|---|
Authorization | string | Required. Use Bearer <your-access-token> where <your-access-token> is the access token you requested from the Galaxy Store authentication server
|
service-account-id | string | Required. The service account ID used to create the JWT associated with the access token (can be found in the Assistance > API Service area of Seller Portal) |
content-type | string | Required for POST, PUT, and PATCH requests. Must be 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 seller’s app list
View a list of all of the seller's registered apps.
Request
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"
Response
Parameters
Name | Type | Description |
---|---|---|
contentName | string | Name of the app. |
contentId | integer | The unique 12-digit identifier of the app. |
contentStatus | string | The status of the app in Seller Portal. |
standardPrice | double | The standard price in USD (United States of America dollars) that determines the default country-specific price for all distribution countries. |
paid | Boolean | Whether or not the app download requires a user payment: Y: The user must pay to download the app N: The app is free to download |
modifyDate | string | The date the app was last updated in Seller Portal. |
Success
[
{
"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 seller’s app details
View information about one of the seller's registered apps.
Request
GET /seller/contentInfo
Parameters
Name | Type | In | Description |
---|---|---|---|
contentId | string | querystring | Required. The unique 12-digit identifier of the app. |
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"
Response
Parameters
See the Content Publish API Reference for more information about these parameters.
Success
[
{
"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
}
]
See Failure response codes for a list of possible response codes when a request fails.
Modify app data
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.
Request
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.
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.
To add to the supportedLanguages
, addLanguage
, and sellCountryList
parameters, append additional content to the JSON structure.
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"
).
Examples
Modify App Metadata
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"
Remove and add countries of app sales
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"
Remove and add app screenshots
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"
Remove additional languages for app
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"
Register binary
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"
Response
Success
Status: 200 Success
{
"ctntId": "000007654321",
"contentStatus": "REGISTERING",
"httpStatus": "OK",
"errorCode": null,
"errorMsg": null
}
See Failure response codes for a list of possible response codes when a request fails.
Submit app
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.
Apps must be in the REGISTERING state before they can be submitted.
Request
POST /seller/contentSubmit
Parameters
Name | Type | In | Description |
---|---|---|---|
contentId | string | body | Required. The unique 12-digit identifier of the app. |
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"
Response
Success
Status: 204 No Content
See Failure response codes for a list of possible response codes when a request fails.
Change app status
Change the status of an app registered in Seller Portal. You can distribute, suspend, or terminate an app.
Request
POST /seller/contentStatusUpdate
Name | Type | In | Description |
---|---|---|---|
contentId | string | body | Required. The unique 12-digit identifier of the app. |
contentStatus | string | body | Required. The status to which to change your app. Set to one of the following values:
|
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"
Response
Success
Status: 204 No Content
See Failure response codes for a list of possible response codes when a request fails.
Create session ID for file upload
Generate a session ID required to upload a file. The session ID is unique and valid for 24 hours.
Request
POST /seller/createUploadSessionId
curl -i -X POST \
"https://devapi.samsungapps.com/seller/createUploadSessionId"
Response
Success
Status: 200 OK
{
"url": "https://seller.samsungapps.com/galaxyapi/fileUpload",
"sessionId": "d7ca6869-128e-4bfb-a56d-674d77f08848"
}
File upload
Upload files required for app submission or for updating an app.
The fileKey
in this response is used in the modify app data request.
Refer to App Registration - Information on app-related image/video registration for image file requirements.
Request
POST /seller/fileUpload
Name | Type | In | Description |
---|---|---|---|
file | string | body | Required. File to upload, such as a binary file, image (icon, cover image, or screenshot), or zip file (game industry age rating certificates or other reference information needed for app review), and type of file. |
sessionId | string | body | Required. Unique ID generated by createUploadSessionId. |
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"
Response
Success
Status: 200 Success
{
"fileKey": "5d33cb93-b399-41c0-9c41-667946736d09",
"fileName": "ICON_512x512.png",
"fileSize": "86265",
"errorCode": null,
"errorMsg": null
}
See Failure response codes for a list of possible response codes when a request fails.
Failure response codes
The following are response codes you may see when the request fails.
Status | Code and message |
---|---|
400 Bad Request |
|
403 Forbidden |
|