Add some no-auth docs

Document some early visible requests made while not signed in
This commit is contained in:
Zero 2020-01-22 00:10:39 -05:00
parent 1e283771f3
commit 4895862748
5 changed files with 982 additions and 119 deletions

1
.gitignore vendored
View File

@ -0,0 +1 @@
sample*.json

View File

@ -1,57 +0,0 @@
<details>
<summary>GET /api/v1/g/s/auid/</summary>
GET an AUID for this device
__query strings__
|name|description|required|
| - | - | - |
|deviceId|Same as NDCDEVICEID|True|
__request_headers__
|name|description|required|
| - | - | - |
|NDCDEVICEID|The device id generated by the app. See|True|
|NDC-MSG-SIG|Message signature (?) generated by the app|False|
|SMDEVICEID|I don't know, seems to be a non-string hex number|False|
</details>
<details>
<summary>POST /api/v1/g/s/device/</summary>
POST a device configuration
__request_headers__
|name|description|required|
| - | - | - |
|NDCDEVICEID|The device id generated by the app. See|True|
|NDC-MSG-SIG|Message signature (?) generated by the app|False|
|SMDEVICEID|I don't know, seems to be a non-string hex number|False|
```JSON
{
"deviceID": "... <device id generated by the app>",
"bundleID": "com.narvii.amino.master <android app package?>",
"clientType": "100 <always 100>",
"timezone": "-300 <timezone number code>",
"systemPushEnabled": "true <true by default on new install>",
"locale": "en_US <locale string>",
"deviceToken": "... <device token generated by the app>",
"deviceTokenType": "1 <always 1?>",
"timestamp": "1579580530965 <request time in ms>"
}
```
__responses__
- 200 - Device configured
Device configured
The device config was accepted
</details>

View File

@ -1,62 +0,0 @@
globals:
request_headers:
"*":
- name: NDCDEVICEID
description: The device id generated by the app. See
required: true
- name: NDC-MSG-SIG
description: Message signature (?) generated by the app
required: false
- name: SMDEVICEID
description: I don't know, seems to be a non-string hex number
required: false
vars:
request:
POST:
body:
post_device:
lang: JSON
content:
{
"deviceID": "... <device id generated by the app>",
"bundleID": "com.narvii.amino.master <android app package?>",
"clientType": "100 <always 100>",
"timezone": "-300 <timezone number code>",
"systemPushEnabled": "true <true by default on new install>",
"locale": "en_US <locale string>",
"deviceToken": "... <device token generated by the app>",
"deviceTokenType": "1 <always 1?>",
"timestamp": "1579580530965 <request time in ms>"
}
response_body:
POST:
post_device:
200:
lang: JSON
content:
{
"api:statuscode": "0 <0 is success>",
"api:duration": "0.034s <operation time>",
"api:message": "OK <more detailed status>",
"api:timestamp": "2020-01-21T04:22:13Z <server time>",
"devOptions": "null <?>"
}
routes:
/api/v1/g/s/device/:
POST:
description: POST a device configuration
body: $request.POST.body.post_device
responses:
200:
title: Device configured
description: The device config was accepted
body: $response_body.POST.post_device.200
/api/v1/g/s/auid/:
GET:
description: GET an AUID for this device
"query strings":
- name: deviceId
description: Same as NDCDEVICEID
required: true

554
amino/no-auth.md Normal file
View File

@ -0,0 +1,554 @@
<details>
<summary>GET /g/s/auid/</summary>
GET an auid for this device
__query strings__
|name|description|required|
| - | - | - |
|deviceId|Same as NDCDEVICEID|True|
__headers__
|name|description|required|
| - | - | - |
|NDCDEVICEID|The device id generated by the app. See|True|
|NDC-MSG-SIG|Message signature (?) generated by the app|False|
|SMDEVICEID|I don't know, seems to be a non-string hex number|False|
|AUID|The auid (UUIDv4) generated on amino servers for this client, retrieved with GET /g/s/auid|False|
__responses__
- 200 - auid Generated
auid Generated
An auid was generated and returned by the server. It may now be used in request headers
```JSON
{
"auid": "... <UUIDv4>"
}
```
</details>
<details>
<summary>GET /g/s/auth/config-v2/</summary>
GET auth config data (unknown use)
__headers__
|name|description|required|
| - | - | - |
|NDCDEVICEID|The device id generated by the app. See|True|
|NDC-MSG-SIG|Message signature (?) generated by the app|False|
|SMDEVICEID|I don't know, seems to be a non-string hex number|False|
|AUID|The auid (UUIDv4) generated on amino servers for this client, retrieved with GET /g/s/auid|False|
__responses__
- 200 - Config Recieved
Config Recieved
Data with an unknown purpose is recieved
```JSON
{
"mobileSignUpProviderList": [
8
]
}
```
</details>
<details>
<summary>POST /g/s/client-config/</summary>
POST device information for configuration. Likely related to analytics / telemetry
__headers__
|name|description|required|
| - | - | - |
|NDCDEVICEID|The device id generated by the app. See|True|
|NDC-MSG-SIG|Message signature (?) generated by the app|False|
|SMDEVICEID|I don't know, seems to be a non-string hex number|False|
|AUID|The auid (UUIDv4) generated on amino servers for this client, retrieved with GET /g/s/auid|False|
```JSON
{
"packageName": "com.narvii.amino.master <android app package?>",
"versionCode": "00000 <likely app version, also sent in user-agent header next to package name>",
"androidAPI": "21 <Android api version. This example is 21, or android 5.0>",
"model": "SCH-R530U <Phone device model. This example is a US Cellular Galaxy S3>",
"device": "d2usc <Another way to identify the phone model>",
"timestamp": "1579580222209 <request time in ms>"
}
```
__responses__
- 200 - Client Configured
Client Configured
The client config was accepted
```JSON
{
"clientConfig": {
"<->": "<Unknown, was empty in api calls made by my client>"
}
}
```
</details>
<details>
<summary>GET /g/s/client-config/appearance-settings</summary>
GET the app appearance settings
__headers__
|name|description|required|
| - | - | - |
|NDCDEVICEID|The device id generated by the app. See|True|
|NDC-MSG-SIG|Message signature (?) generated by the app|False|
|SMDEVICEID|I don't know, seems to be a non-string hex number|False|
|AUID|The auid (UUIDv4) generated on amino servers for this client, retrieved with GET /g/s/auid|False|
__responses__
- 200 - Appearance Settings
Appearance Settings
The appearance objects to use was retrieved
```JSON
{
"backgroundMediaList": [
[
"100 <Media, always 100?>",
"... <URL to an image>",
"null <unknown purpose>"
]
]
}
```
</details>
<details>
<summary>GET /g/s/client-config/content-language-settings/</summary>
GET the app content language settings
__headers__
|name|description|required|
| - | - | - |
|NDCDEVICEID|The device id generated by the app. See|True|
|NDC-MSG-SIG|Message signature (?) generated by the app|False|
|SMDEVICEID|I don't know, seems to be a non-string hex number|False|
|AUID|The auid (UUIDv4) generated on amino servers for this client, retrieved with GET /g/s/auid|False|
__responses__
- 200 - Language Settings
Language Settings
The language settings were retrieved
```JSON
{
"contentLanguageSettings": {
"language": "en <The language preference>"
}
}
```
</details>
<details>
<summary>GET /g/s/community/configuration/</summary>
GET community config info
__headers__
|name|description|required|
| - | - | - |
|NDCDEVICEID|The device id generated by the app. See|True|
|NDC-MSG-SIG|Message signature (?) generated by the app|False|
|SMDEVICEID|I don't know, seems to be a non-string hex number|False|
|AUID|The auid (UUIDv4) generated on amino servers for this client, retrieved with GET /g/s/auid|False|
__responses__
- 200 - Community Config
Community Config
Community config was retrieved
```JSON
{
"configuration": {
"appearance": {},
"page": {},
"module": {
"post": {
"enabled": true,
"postType": {
"screeningRoom": {
"privilege": {
"type": "5 <Unknown use>",
"minLevel": "100 <Unknown use>"
},
"enabled": true
},
"story": "{...} <Same privilege format",
"liveMode": "{...} <Same privilege format",
"publicChatRooms": "{...} <Same privilege format"
}
},
"chat": {
"enabled": true,
"spamProtectionEnabled": true,
"avChat": {
"screeningRoomEnabled": true,
"audioEnabled": "true <Probably in-chat voice>",
"videoEnabled": "false <Probably in-chat video>",
"audio2Enabled": "true <Probably in-chat voice>"
},
"publicChat": "{...} <Same privilege format>"
}
},
"general": {
"videoUploadPolicy": 1
}
}
}
```
</details>
<details>
<summary>POST /g/s/device/</summary>
POST a device configuration
__headers__
|name|description|required|
| - | - | - |
|NDCDEVICEID|The device id generated by the app. See|True|
|NDC-MSG-SIG|Message signature (?) generated by the app|False|
|SMDEVICEID|I don't know, seems to be a non-string hex number|False|
|AUID|The auid (UUIDv4) generated on amino servers for this client, retrieved with GET /g/s/auid|False|
```JSON
{
"deviceID": "... <device id generated by the app>",
"bundleID": "com.narvii.amino.master <android app package?>",
"clientType": "100 <always 100>",
"timezone": "-300 <timezone number code>",
"systemPushEnabled": "true <true by default on new install>",
"locale": "en_US <locale string>",
"deviceToken": "... <device token generated by the app>",
"deviceTokenType": "1 <always 1?>",
"timestamp": "1579580530965 <request time in ms>"
}
```
__responses__
- 200 - Device Configured
Device Configured
The device config was accepted
```JSON
{
"devOptions": "null <?>"
}
```
</details>
<details>
<summary>GET /g/s/eventlog/profile/</summary>
GET the eventlog for the current profile (appears to be device profile by auid, not necessarily amino profile)
__query strings__
|name|description|required|
| - | - | - |
|language|language code used, example being `en`. Affects experiments|False|
__headers__
|name|description|required|
| - | - | - |
|NDCDEVICEID|The device id generated by the app. See|True|
|NDC-MSG-SIG|Message signature (?) generated by the app|False|
|SMDEVICEID|I don't know, seems to be a non-string hex number|False|
|AUID|The auid (UUIDv4) generated on amino servers for this client, retrieved with GET /g/s/auid|False|
__responses__
- 200 - Eventlog Retrieved
Eventlog Retrieved
The eventlog for this device profile. This data appears to be related to AB experiments
```JSON
{
"globalStrategyInfo": "{...} <json string literal with unknown meaning>",
"uid": "None <Unknown. Probably another UUIDv4>",
"contentLanguage": "en <Primary app language>",
"signUpStrategy": "2 <Signup method. Variants unknown>",
"landingOption": "4 <Landing option. Variants unknown>",
"interestPickerStyle": "3 <Style for the interest picker. Variants unknown>",
"auid": "... <This device's auid>",
"needTriggerInterestPicker": "true <unknown meaning>",
"participatedExperiments": {
"userVectorCommunitySimilarityChannel": 1,
"retentionSrPush": 2,
"landingOptionExp": 2,
"communitySearchExp": 2,
"communitySearchRerankExp": 1,
"<->": " <various AB experiment values>"
}
}
```
</details>
<details>
<summary>GET /g/s/home/discover/content-modules/</summary>
GET content modules for homepage discovery. This includes community info, stories, ads, ect
__query strings__
|name|description|required|
| - | - | - |
|v|Likely a version number, seems to always be 1. No visible change when using arbitrary values.|False|
__headers__
|name|description|required|
| - | - | - |
|NDCDEVICEID|The device id generated by the app. See|True|
|NDC-MSG-SIG|Message signature (?) generated by the app|False|
|SMDEVICEID|I don't know, seems to be a non-string hex number|False|
|AUID|The auid (UUIDv4) generated on amino servers for this client, retrieved with GET /g/s/auid|False|
__responses__
- 200 - Content Modules
Content Modules
discovery content modules were retrieved
```JSON
{
"contentModuleList": [
{
"-": "community cards",
"contentObjectType": "16 <Unknown, probably content type id>",
"contentPoolId": "en <Unknown, probably content language>",
"contentVariety": "1 <Unknown, appears to be related to dataUrl path>",
"createdTime": "2019-12-31T08:38:32Z <Likely content created at>",
"customizable": "false <Amino stuff seems to be false, ads seem true>",
"dataUrl": "/topic/0/feed/community?... <URL to this content, see GET /g/s/topic/0/feed...>",
"displayName": "Recommended Communities <Name to put on the header of this section",
"ext": {
"<->": " <Ads seem to have field `adUnitId`>"
},
"extensions": "null <Always seems to be null>",
"isVirtual": "false <Only discover topics button seems to be true>",
"moduleId": "... <UUIDv4 of this item>",
"moduleName": "Recommended Communities <Name of this module>",
"moduleType": "RecommendedCommunities <Type of this module. Related to contentObjectType?>",
"status": "0 <Appears to always be zero>",
"style": "GeneralCommunityCard <Style of this item>",
"topicLocked": "false <Unknown use of `locked` in this context",
"uid": "... <UUIDv4 of... something>",
"userRemovable": "false <Unknown, probably related to frontpage stuff being not remuvable>",
"visibility": "1 <Likely a visibility bool>"
},
{
"-": "an ad",
"contentObjectType": "151 <Unknown, probably content type id>",
"contentPoolId": " <Unknown, probably content language>",
"contentVariety": "0 <Unknown, appears to be related to dataUrl path>",
"createdTime": "2019-12-31T08:38:32Z <Likely content created at>",
"customizable": "true <Amino stuff seems to be false, ads seem true>",
"dataUrl": "/topic/0/feed/banner-ads?... <URL to this content, see GET /g/s/topic/0/feed...>",
"displayName": "Recommended Communities <Name to put on the header of this section",
"ext": {
"adUnitId": "703300 <ID to look up this ad. Used in GET `dataUrl`"
},
"extensions": "null <Always seems to be null>",
"isVirtual": "false <Only discover topics button seems to be true>",
"moduleId": "... <UUIDv4 of this item>",
"moduleName": "Little Red series for all EN users <Name of this module>",
"moduleType": "CustomizedBannerAds <Type of this module. Related to contentObjectType>",
"status": "0 <Appears to always be zero>",
"style": "BannerSizeMedium <Style of this item>",
"topicLocked": "false <Unknown use of `locked` in this context",
"uid": "... <UUIDv4 of... something>",
"userRemovable": "false <Unknown, probably related to frontpage stuff being not remuvable>",
"visibility": "1 <Likely a visibility bool>"
}
]
}
```
</details>
<details>
<summary>GET /g/s/topic/:variant/feed/banner-ads/</summary>
GET a piece of media for a topic. Usually seems to be used in homepage exploration
__url arguments__
|name|description|required|
| - | - | - |
|variant|The variant of this topic item. Nonzero values seem to have no effect|False|
__query strings__
|name|description|required|
| - | - | - |
|adUnitId|The id of this add, which is a number|True|
|size|Unknown. Seems to make no difference|False|
|pagingType|Unknown. Values that are not `t` seem to return no items in itemList (which otherwise has one item)|False|
|moduleID|Unknown. Seems to be a UUIDv4 by default, changing this (even to invalid UUIDv4 strings) seems to have no effect|False|
__headers__
|name|description|required|
| - | - | - |
|NDCDEVICEID|The device id generated by the app. See|True|
|NDC-MSG-SIG|Message signature (?) generated by the app|False|
|SMDEVICEID|I don't know, seems to be a non-string hex number|False|
|AUID|The auid (UUIDv4) generated on amino servers for this client, retrieved with GET /g/s/auid|False|
__responses__
- 200 - Banner Ads Retrieved
Banner Ads Retrieved
The banner ads matching this id were retrieved
```JSON
{
"allItemCount": "1 <Total returnable item count>",
"itemList": [
{
"adCampaignId": "803326 <Likely related to ad grouping by campaign, use unknown>",
"deepLink": "ndc://topic/1390058 <Likely a hard link to this item, root URL unknown>",
"imageUrl": "... <A URL to the image used, seems to be background images?>",
"objectId": "803326 <Seems to be the same as adCampaignId>",
"objectType": "153 <Type of this object. Matches those in GET /g/s/home/discover/content-modules/>",
"strategyInfo": {
"<->": "<This is a raw JSON string. It has been reformatted as JSON>",
"adUnitId": "703323 <Matches the adUnitId query string>",
"imageUrl": "... <A URL to the used image, seesm to be the same as parent object>",
"landingUrl": "... <Seems to match parent object>",
"objectId": "803326 <Seems to match parent object>",
"objectType": "ad_campaign <Unknown use>",
"reqId": "... <A UUIDv4, use unknown>",
"scenarioType": "banner-703323 <Seems to match banner-adUnitId, use unknown>",
"uiPos": "0 <Likely related to desired render position"
}
}
],
"paging": {
"nextPageToken": "... <Page token>"
}
}
```
</details>
<details>
<summary>GET /g/s/topic/:variant/feed/story/</summary>
GET a list of blogs for a topic. Usually from homepage display
__url arguments__
|name|description|required|
| - | - | - |
|variant|The variant of this topic item. Nonzero values seem to have no effect|False|
__query strings__
|name|description|required|
| - | - | - |
|type|The type of story set to get. Only `discover-list` seems to be used and work|True|
|categoryKey|Likely has to do with what type of posts are returned. Logged out default is `recommendation`|False|
|v|Likely a version number. Changing to arbitrary strings seems to have no effect|False|
|size|Likely intended to be number of items retrieved, seems not to have an effect|False|
|pageToken|Likely intended to be for pagination, seems not to have an effect| |
|pagingType|Seems to have no effect, default value is `t`|False|
__headers__
|name|description|required|
| - | - | - |
|NDCDEVICEID|The device id generated by the app. See|True|
|NDC-MSG-SIG|Message signature (?) generated by the app|False|
|SMDEVICEID|I don't know, seems to be a non-string hex number|False|
|AUID|The auid (UUIDv4) generated on amino servers for this client, retrieved with GET /g/s/auid|False|
__responses__
- 200 - Blogs Retrieved
Blogs Retrieved
The blogs for frontpage display were retrieved
```JSON
{
"allItemCount": "400 <Total returnable item count>",
"blogList": [
"{...} <full `blog` object>"
],
"communityInfoMapping": {
"<->": "<community id (ndcId) -> short info",
"192258706": {
"<->": " <Short amino community description>",
"endpoint": "Tik <Endpoint pointing to this community>",
"icon": "... <URL to the icon of this community",
"name": "-TikTok Amino- <Name of this community>",
"ndcId": "192258706 <Number ID of this community>",
"status": "0 <Unknown>"
}
},
"paging": {
"nextPageToken": "... <Page token>",
"refreshPageToken": "... <Unknown use>"
}
}
```
</details>

427
amino/no-auth.yml Normal file
View File

@ -0,0 +1,427 @@
globals:
headers:
"*":
- name: NDCDEVICEID
description: The device id generated by the app. See
required: true
- name: NDC-MSG-SIG
description: Message signature (?) generated by the app
required: false
- name: SMDEVICEID
description: I don't know, seems to be a non-string hex number
required: false
- name: AUID
description: The auid (UUIDv4) generated on amino servers for this client, retrieved with GET /g/s/auid
required: false
vars:
url-args:
topic-variant:
name: variant
description: The variant of this topic item. Nonzero values seem to have no effect
required: false
request:
device:
POST:
lang: JSON
content:
{
"deviceID": "... <device id generated by the app>",
"bundleID": "com.narvii.amino.master <android app package?>",
"clientType": "100 <always 100>",
"timezone": "-300 <timezone number code>",
"systemPushEnabled": "true <true by default on new install>",
"locale": "en_US <locale string>",
"deviceToken": "... <device token generated by the app>",
"deviceTokenType": "1 <always 1?>",
"timestamp": "1579580530965 <request time in ms>"
}
client-config:
POST:
lang: JSON
content:
{
"packageName": "com.narvii.amino.master <android app package?>",
"versionCode": "00000 <likely app version, also sent in user-agent header next to package name>",
"androidAPI": "21 <Android api version. This example is 21, or android 5.0>",
"model": "SCH-R530U <Phone device model. This example is a US Cellular Galaxy S3>",
"device": "d2usc <Another way to identify the phone model>",
"timestamp": "1579580222209 <request time in ms>"
}
response:
device:
POST:
ok:
lang: JSON
content:
{
"devOptions": "null <?>"
}
client-config:
POST:
ok:
lang: JSON
content:
{
"clientConfig": {
"<->": "<Unknown, was empty in api calls made by my client>"
}
}
auid:
GET:
ok:
lang: JSON
content:
{
"auid": "... <UUIDv4>"
}
auth-config:
GET:
ok:
lang: JSON
content: {
"mobileSignUpProviderList": [8]
}
eventlog-profile:
GET:
ok:
lang: JSON
content:
{
"globalStrategyInfo": "{...} <json string literal with unknown meaning>",
"uid": "None <Unknown. Probably another UUIDv4>",
"contentLanguage": "en <Primary app language>",
"signUpStrategy": "2 <Signup method. Variants unknown>",
"landingOption": "4 <Landing option. Variants unknown>",
"interestPickerStyle": "3 <Style for the interest picker. Variants unknown>",
"auid": "... <This device's auid>",
"needTriggerInterestPicker": "true <unknown meaning>",
"participatedExperiments": {
"userVectorCommunitySimilarityChannel": 1,
"retentionSrPush": 2,
"landingOptionExp": 2,
"communitySearchExp": 2,
"communitySearchRerankExp": 1,
"<->": " <various AB experiment values>"
}
}
content-language-settings:
GET:
ok:
lang: JSON
content:
{
"contentLanguageSettings": {
"language": "en <The language preference>"
}
}
appearance-settings:
GET:
ok:
lang: JSON
content:
{
"backgroundMediaList": [
[
"100 <Media, always 100?>",
"... <URL to an image>",
"null <unknown purpose>"
]
]
}
community-configuration:
GET:
ok:
lang: JSON
content:
{
"configuration": {
"appearance": {},
"page": {},
"module": {
"post": {
"enabled": true,
"postType": {
"screeningRoom": {
"privilege": {
"type": "5 <Unknown use>",
"minLevel": "100 <Unknown use>"
},
"enabled": true
},
"story": "{...} <Same privilege format",
"liveMode": "{...} <Same privilege format",
"publicChatRooms": "{...} <Same privilege format"
}
},
"chat": {
"enabled": true,
"spamProtectionEnabled": true,
"avChat": {
"screeningRoomEnabled": true,
"audioEnabled": "true <Probably in-chat voice>",
"videoEnabled": "false <Probably in-chat video>",
"audio2Enabled": "true <Probably in-chat voice>"
},
"publicChat": "{...} <Same privilege format>"
}
},
"general": {
"videoUploadPolicy": 1
}
}
}
content-modules:
GET:
ok:
lang: JSON
content:
{
"contentModuleList": [
{
"-": "community cards",
"contentObjectType": "16 <Unknown, probably content type id>",
"contentPoolId": "en <Unknown, probably content language>",
"contentVariety": "1 <Unknown, appears to be related to dataUrl path>",
"createdTime": "2019-12-31T08:38:32Z <Likely content created at>",
"customizable": "false <Amino stuff seems to be false, ads seem true>",
"dataUrl": "/topic/0/feed/community?... <URL to this content, see GET /g/s/topic/0/feed...>",
"displayName": "Recommended Communities <Name to put on the header of this section",
"ext": {
"<->": " <Ads seem to have field `adUnitId`>"
},
"extensions": "null <Always seems to be null>",
"isVirtual": "false <Only discover topics button seems to be true>",
"moduleId": "... <UUIDv4 of this item>",
"moduleName": "Recommended Communities <Name of this module>",
"moduleType": "RecommendedCommunities <Type of this module. Related to contentObjectType?>",
"status": "0 <Appears to always be zero>",
"style": "GeneralCommunityCard <Style of this item>",
"topicLocked": "false <Unknown use of `locked` in this context",
"uid": "... <UUIDv4 of... something>",
"userRemovable": "false <Unknown, probably related to frontpage stuff being not remuvable>",
"visibility": "1 <Likely a visibility bool>"
},
{
"-": "an ad",
"contentObjectType": "151 <Unknown, probably content type id>",
"contentPoolId": " <Unknown, probably content language>",
"contentVariety": "0 <Unknown, appears to be related to dataUrl path>",
"createdTime": "2019-12-31T08:38:32Z <Likely content created at>",
"customizable": "true <Amino stuff seems to be false, ads seem true>",
"dataUrl": "/topic/0/feed/banner-ads?... <URL to this content, see GET /g/s/topic/0/feed...>",
"displayName": "Recommended Communities <Name to put on the header of this section",
"ext": {
"adUnitId": "703300 <ID to look up this ad. Used in GET `dataUrl`"
},
"extensions": "null <Always seems to be null>",
"isVirtual": "false <Only discover topics button seems to be true>",
"moduleId": "... <UUIDv4 of this item>",
"moduleName": "Little Red series for all EN users <Name of this module>",
"moduleType": "CustomizedBannerAds <Type of this module. Related to contentObjectType>",
"status": "0 <Appears to always be zero>",
"style": "BannerSizeMedium <Style of this item>",
"topicLocked": "false <Unknown use of `locked` in this context",
"uid": "... <UUIDv4 of... something>",
"userRemovable": "false <Unknown, probably related to frontpage stuff being not remuvable>",
"visibility": "1 <Likely a visibility bool>"
}
]
}
topic-banner-ads:
GET:
ok:
lang: JSON
content:
{
"allItemCount": "1 <Total returnable item count>",
"itemList": [
{
"adCampaignId": "803326 <Likely related to ad grouping by campaign, use unknown>",
"deepLink": "ndc://topic/1390058 <Likely a hard link to this item, root URL unknown>",
"imageUrl": "... <A URL to the image used, seems to be background images?>",
"objectId": "803326 <Seems to be the same as adCampaignId>",
"objectType": "153 <Type of this object. Matches those in GET /g/s/home/discover/content-modules/>",
"strategyInfo": {
"<->": "<This is a raw JSON string. It has been reformatted as JSON>",
"adUnitId": "703323 <Matches the adUnitId query string>",
"imageUrl": "... <A URL to the used image, seesm to be the same as parent object>",
"landingUrl": "... <Seems to match parent object>",
"objectId": "803326 <Seems to match parent object>",
"objectType": "ad_campaign <Unknown use>",
"reqId": "... <A UUIDv4, use unknown>",
"scenarioType": "banner-703323 <Seems to match banner-adUnitId, use unknown>",
"uiPos": "0 <Likely related to desired render position"
}
}
],
"paging": {
"nextPageToken": "... <Page token>"
}
}
topic-story:
GET:
ok:
lang: JSON
content:
{
"allItemCount": "400 <Total returnable item count>",
"blogList": [
"{...} <full `blog` object>"
],
"communityInfoMapping": {
"<->": "<community id (ndcId) -> short info",
"192258706": {
"<->": " <Short amino community description>",
"endpoint": "Tik <Endpoint pointing to this community>",
"icon": "... <URL to the icon of this community",
"name": "-TikTok Amino- <Name of this community>",
"ndcId": "192258706 <Number ID of this community>",
"status": "0 <Unknown>"
}
},
"paging": {
"nextPageToken": "... <Page token>",
"refreshPageToken": "... <Unknown use>"
}
}
routes:
/g/s/device/:
POST:
description: POST a device configuration
body: $request.device.POST
responses:
200:
title: Device Configured
description: The device config was accepted
body: $response.device.POST.ok
/g/s/auid/:
GET:
description: GET an auid for this device
query strings:
- name: deviceId
description: Same as NDCDEVICEID
required: true
responses:
200:
title: auid Generated
description: An auid was generated and returned by the server. It may now be used in request headers
body: $response.auid.GET.ok
/g/s/client-config/:
POST:
description: POST device information for configuration. Likely related to analytics / telemetry
body: $request.client-config.POST
responses:
200:
title: Client Configured
description: The client config was accepted
body: $response.client-config.POST.ok
/g/s/client-config/content-language-settings/:
GET:
description: GET the app content language settings
responses:
200:
title: Language Settings
description: The language settings were retrieved
body: $response.content-language-settings.GET.ok
/g/s/client-config/appearance-settings:
GET:
description: GET the app appearance settings
responses:
200:
title: Appearance Settings
description: The appearance objects to use was retrieved
body: $response.appearance-settings.GET.ok
/g/s/auth/config-v2/:
GET:
description: GET auth config data (unknown use)
responses:
200:
title: Config Recieved
description: Data with an unknown purpose is recieved
body: $response.auth-config.GET.ok
/g/s/eventlog/profile/:
GET:
description: GET the eventlog for the current profile (appears to be device profile by auid, not necessarily amino profile)
query strings:
- name: language
description: language code used, example being `en`. Affects experiments
required: false
responses:
200:
title: Eventlog Retrieved
description: The eventlog for this device profile. This data appears to be related to AB experiments
body: $response.eventlog-profile.GET.ok
/g/s/community/configuration/:
GET:
description: GET community config info
responses:
200:
title: Community Config
description: Community config was retrieved
body: $response.community-configuration.GET.ok
/g/s/home/discover/content-modules/:
GET:
description: GET content modules for homepage discovery. This includes community info, stories, ads, ect
query strings:
- name: v
description: Likely a version number, seems to always be 1. No visible change when using arbitrary values.
required: false
responses:
200:
title: Content Modules
description: discovery content modules were retrieved
body: $response.content-modules.GET.ok
/g/s/topic/:variant/feed/banner-ads/:
GET:
description: GET a piece of media for a topic. Usually seems to be used in homepage exploration
url arguments:
- $url-args.topic-variant
query strings:
- name: adUnitId
description: The id of this add, which is a number
required: true
- name: size
description: Unknown. Seems to make no difference
required: false
- name: pagingType
description: Unknown. Values that are not `t` seem to return no items in itemList (which otherwise has one item)
required: false
- name: moduleID
description: Unknown. Seems to be a UUIDv4 by default, changing this (even to invalid UUIDv4 strings) seems to have no effect
required: false
responses:
200:
title: Banner Ads Retrieved
description: The banner ads matching this id were retrieved
body: $response.topic-banner-ads.GET.ok
/g/s/topic/:variant/feed/story/:
GET:
description: GET a list of blogs for a topic. Usually from homepage display
url arguments:
- $url-args.topic-variant
query strings:
- name: type
description: The type of story set to get. Only `discover-list` seems to be used and work
required: true
- name: categoryKey
description: Likely has to do with what type of posts are returned. Logged out default is `recommendation`
required: false
- name: v
description: Likely a version number. Changing to arbitrary strings seems to have no effect
required: false
- name: size
description: Likely intended to be number of items retrieved, seems not to have an effect
required: false
- name: pageToken
description: Likely intended to be for pagination, seems not to have an effect
- name: pagingType
description: Seems to have no effect, default value is `t`
required: false
responses:
200:
title: Blogs Retrieved
description: The blogs for frontpage display were retrieved
body: $response.topic-story.GET.ok