Online Now  

/v1/appsv2/

V2 appstore - list, create, configure, and purchase iframe-hosted apps. Distinct from /v1/apps/ (the legacy `\AT\ATApps` dev-platform model for externally-hosted developer apps with private keys). The `appsv2` namespace covers the v2 iframe app shell (\AT\ATAppsV2, /modules/v2/_app_host/), backed by the `ATAppsV2` table for user-created entries plus the static manifests in /config/atv2-apps.php for first-party shells.
GET

/v1/appsv2/get_about_post_candidates

#
Finds public community posts that can be selected as an app's About my app post. Eligibility mirrors the profile/About Me selector.

Parameters

NameTypeRequiredDefaultDescription
searchFilter string No "" Search text for public top-level posts with image media by title, body, or author alias.
postID int No 0 Exact ATDiscussionPosts.ID to preview.
pageSize int No 8 Maximum candidates to return for text search.
ownPostsOnly bool No false When true, only return public image-media posts authored by the current API user.
Request example (cURL)
curl --get \
  'https://ca.appointmenttrader.com/v1/appsv2/get_about_post_candidates' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'searchFilter={{searchFilter}}' \
  --data-urlencode 'postID={{postID}}' \
  --data-urlencode 'pageSize={{pageSize}}' \
  --data-urlencode 'ownPostsOnly={{ownPostsOnly}}'

Returns

JSON
See the shared response schema and synthetic example.
Response fields
FieldTypeRequiredDescription
$appsv2_get_about_post_candidates_Response Yes
$.oneOf[0] Yes
$.oneOf[0].allOf[0]object Yes
$.oneOf[0].allOf[0].RequestUserAliasstring Yes
$.oneOf[0].allOf[0].RequestPathstring | null Yes
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" Yes
$.oneOf[0].allOf[0].ResponseCodeinteger Yes
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring No
$.oneOf[0].allOf[1]object Yes
$.oneOf[0].allOf[1].Payloadobject Yes
$.oneOf[0].allOf[1].Payload.Candidatesarray Yes
$.oneOf[0].allOf[1].Payload.Candidates[]object No
$.oneOf[0].allOf[1].Payload.Candidates[].idinteger Yes
$.oneOf[0].allOf[1].Payload.Candidates[].titlestring Yes
$.oneOf[0].allOf[1].Payload.Candidates[].bodyPreviewstring Yes
$.oneOf[0].allOf[1].Payload.Candidates[].urlstring Yes
$.oneOf[0].allOf[1].Payload.Candidates[].createdDatestring Yes
$.oneOf[0].allOf[1].Payload.Candidates[].authorAboutPostAuthor Yes
$.oneOf[0].allOf[1].Payload.Candidates[].author.anyOf[0]object Yes
$.oneOf[0].allOf[1].Payload.Candidates[].author.anyOf[0].idinteger Yes
$.oneOf[0].allOf[1].Payload.Candidates[].author.anyOf[0].aliasstring Yes
$.oneOf[0].allOf[1].Payload.Candidates[].author.anyOf[0].avatarEmojistring Yes
$.oneOf[0].allOf[1].Payload.Candidates[].author.anyOf[0].profileUrlstring Yes
$.oneOf[0].allOf[1].Payload.Candidates[].author.anyOf[1]object Yes
$.oneOf[0].allOf[1].Payload.Candidates[].author.anyOf[1].idnull Yes
$.oneOf[0].allOf[1].Payload.Candidates[].author.anyOf[1].aliasnull Yes
$.oneOf[0].allOf[1].Payload.Candidates[].author.anyOf[1].avatarEmojinull Yes
$.oneOf[0].allOf[1].Payload.Candidates[].author.anyOf[1].profileUrlnull Yes
$.oneOf[0].allOf[1].Payload.Candidates[].author.anyOf[1].identityHidden = true Yes
$.oneOf[0].allOf[1].Payload.Candidates[].author.anyOf[1].identityHiddenUntilinteger Yes
$.oneOf[0].allOf[1].Payload.Candidates[].boardobject Yes
$.oneOf[0].allOf[1].Payload.Candidates[].board.idinteger Yes
$.oneOf[0].allOf[1].Payload.Candidates[].board.namestring Yes
$.oneOf[0].allOf[1].Payload.Candidates[].board.slugstring Yes
$.oneOf[0].allOf[1].Payload.Candidates[].board.typestring Yes
$.oneOf[0].allOf[1].Payload.Candidates[].imageMediaCountinteger Yes
$.oneOf[0].allOf[1].Payload.Candidates[].mediaarray Yes
$.oneOf[0].allOf[1].Payload.Candidates[].media[]object No
$.oneOf[0].allOf[1].Payload.Candidates[].media[].idinteger Yes
$.oneOf[0].allOf[1].Payload.Candidates[].media[].thumbUrlstring Yes
$.oneOf[0].allOf[1].Payload.Candidates[].media[].mediaUrlstring Yes
$.oneOf[0].allOf[1].Payload.Candidates[].media[].mediaTypestring Yes
$.oneOf[0].allOf[1].Payload.Candidates[].media[].widthinteger Yes
$.oneOf[0].allOf[1].Payload.Candidates[].media[].heightinteger Yes
$.oneOf[0].allOf[1].Payload.Candidates[].media[].titlestring Yes
$.oneOf[0].allOf[1].Payload.Candidates[].media[].isImageboolean Yes
$.oneOf[0].allOf[1].Payload.Candidates[].media[].isEmbeddedboolean Yes
$.oneOf[0].allOf[1].Payload.Pageobject Yes
$.oneOf[0].allOf[1].Payload.Page.pageSizeinteger Yes
$.oneOf[0].allOf[1].Payload.Page.ownPostsOnlyinteger [0,1] Yes
$.oneOf[0].allOf[1].Payload.Page.requiresImageMedia = 1 Yes
$.oneOf[0].allOf[1].Payload.Page.minimumImageMediaCount = 2 Yes
$.oneOf[1]object Yes
$.oneOf[1].RequestUserAliasstring Yes
$.oneOf[1].RequestPathstring | null Yes
$.oneOf[1].RequestStatus = "Failed" Yes
$.oneOf[1].ResponseCodeinteger Yes
$.oneOf[1].ResponseMessageAPIResponseMessage Yes
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[1].ResponseMessage.oneOf[1]array Yes
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[1].ResponseMessage.oneOf[2]object Yes
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[1].RequestImpersonatedByUserAliasstring No
Response example
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/appsv2/get_about_post_candidates",
    "RequestUserAlias": "example-user",
    "Payload": {
        "Candidates": [],
        "Page": {
            "pageSize": 0,
            "ownPostsOnly": 0,
            "requiresImageMedia": 1,
            "minimumImageMediaCount": 2
        }
    }
}
Machine-readable endpoint documentation
GET

/v1/appsv2/get_checkout_url

#
Returns an inline custom-article checkout URL for paid app access.

Parameters

NameTypeRequiredDefaultDescription
appID int Yes — ATAppsV2.ID of the paid app.
returnURL string No "" Optional same-host URL to return to after checkout.
Request example (cURL)
curl --get \
  'https://ca.appointmenttrader.com/v1/appsv2/get_checkout_url' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'appID={{appID}}' \
  --data-urlencode 'returnURL={{returnURL}}'

Returns

JSON
See the shared response schema and synthetic example.
Response fields
FieldTypeRequiredDescription
$appsv2_get_checkout_url_Response Yes
$.oneOf[0] Yes
$.oneOf[0].allOf[0]object Yes
$.oneOf[0].allOf[0].RequestUserAliasstring Yes
$.oneOf[0].allOf[0].RequestPathstring | null Yes
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" Yes
$.oneOf[0].allOf[0].ResponseCodeinteger Yes
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring No
$.oneOf[0].allOf[1]object Yes
$.oneOf[0].allOf[1].Payloadobject Yes
$.oneOf[0].allOf[1].Payload.checkoutUrlstring Yes
$.oneOf[0].allOf[1].Payload.app Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0]object Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].idstring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].slugstring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].namestring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].descriptionstring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].iconstring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].entryUrlstring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].defaultPathstring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].contentWidthstring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].dbIDinteger Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].ownerUserIDinteger Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].aboutPostIDinteger Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].priceAmountinteger Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].menuarray Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].isUserCreated = true Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].requiredLogin = true Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricingTypestring ["Free","MonthlyUSD","YearlyUSD","MonthlyTraderpoints","YearlyTraderpoints"] Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricingobject Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.typestring ["Free","MonthlyUSD","YearlyUSD","MonthlyTraderpoints","YearlyTraderpoints"] Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.isPaidinteger [0,1] Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.periodstring ["free","monthly","yearly"] Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.paymentModestring ["free","usd","traderpoints"] Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.amountCentsinteger Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.traderpointsAmountinteger Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.labelstring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].accessobject No
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.canAccessinteger [0,1] Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.isOwnerinteger [0,1] Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.isFreeinteger [0,1] Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.hasActiveAccessinteger [0,1] Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.accessEndDatestring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].selectedForPostinteger [0,1] No
$.oneOf[0].allOf[1].Payload.app.anyOf[1]array Yes
$.oneOf[1]object Yes
$.oneOf[1].RequestUserAliasstring Yes
$.oneOf[1].RequestPathstring | null Yes
$.oneOf[1].RequestStatus = "Failed" Yes
$.oneOf[1].ResponseCodeinteger Yes
$.oneOf[1].ResponseMessageAPIResponseMessage Yes
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[1].ResponseMessage.oneOf[1]array Yes
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[1].ResponseMessage.oneOf[2]object Yes
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[1].RequestImpersonatedByUserAliasstring No
Response example
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/appsv2/get_checkout_url",
    "RequestUserAlias": "example-user",
    "Payload": {
        "checkoutUrl": "synthetic-example",
        "app": {
            "id": "synthetic-example",
            "slug": "synthetic-example",
            "name": "synthetic-example",
            "description": "synthetic-example",
            "icon": "synthetic-example",
            "entryUrl": "synthetic-example",
            "defaultPath": "synthetic-example",
            "contentWidth": "synthetic-example",
            "dbID": 0,
            "ownerUserID": 0,
            "aboutPostID": 0,
            "priceAmount": 0,
            "menu": [],
            "isUserCreated": true,
            "requiredLogin": true,
            "pricingType": "Free",
            "pricing": {
                "type": "Free",
                "isPaid": 0,
                "period": "free",
                "paymentMode": "free",
                "amountCents": 0,
                "traderpointsAmount": 0,
                "label": "synthetic-example"
            }
        }
    }
}
Machine-readable endpoint documentation
GET

/v1/appsv2/get_list

#
Returns the list of published user-created apps for the appstore. Public-by-design: the appstore is a public browse surface; paid apps only expose storefront metadata here, while app access is enforced by /modules/v2/_app_host/ and \AT\ATAppsV2::ViewerCanAccess().
Request example (cURL)
curl --get \
  'https://ca.appointmenttrader.com/v1/appsv2/get_list' \
  --data-urlencode 'key={{API_KEY}}'

Returns

JSON
See the shared response schema and synthetic example.
Response fields
FieldTypeRequiredDescription
$appsv2_get_list_Response Yes
$.oneOf[0] Yes
$.oneOf[0].allOf[0]object Yes
$.oneOf[0].allOf[0].RequestUserAliasstring Yes
$.oneOf[0].allOf[0].RequestPathstring | null Yes
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" Yes
$.oneOf[0].allOf[0].ResponseCodeinteger Yes
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring No
$.oneOf[0].allOf[1]object Yes
$.oneOf[0].allOf[1].Payloadobject Yes
$.oneOf[0].allOf[1].Payload.appsarray Yes
$.oneOf[0].allOf[1].Payload.apps[]object No
$.oneOf[0].allOf[1].Payload.apps[].idstring Yes
$.oneOf[0].allOf[1].Payload.apps[].slugstring Yes
$.oneOf[0].allOf[1].Payload.apps[].namestring Yes
$.oneOf[0].allOf[1].Payload.apps[].descriptionstring Yes
$.oneOf[0].allOf[1].Payload.apps[].iconstring Yes
$.oneOf[0].allOf[1].Payload.apps[].entryUrlstring Yes
$.oneOf[0].allOf[1].Payload.apps[].defaultPathstring Yes
$.oneOf[0].allOf[1].Payload.apps[].contentWidthstring Yes
$.oneOf[0].allOf[1].Payload.apps[].dbIDinteger Yes
$.oneOf[0].allOf[1].Payload.apps[].ownerUserIDinteger Yes
$.oneOf[0].allOf[1].Payload.apps[].aboutPostIDinteger Yes
$.oneOf[0].allOf[1].Payload.apps[].priceAmountinteger Yes
$.oneOf[0].allOf[1].Payload.apps[].menuarray Yes
$.oneOf[0].allOf[1].Payload.apps[].isUserCreated = true Yes
$.oneOf[0].allOf[1].Payload.apps[].requiredLogin = true Yes
$.oneOf[0].allOf[1].Payload.apps[].pricingTypestring ["Free","MonthlyUSD","YearlyUSD","MonthlyTraderpoints","YearlyTraderpoints"] Yes
$.oneOf[0].allOf[1].Payload.apps[].pricingobject Yes
$.oneOf[0].allOf[1].Payload.apps[].pricing.typestring ["Free","MonthlyUSD","YearlyUSD","MonthlyTraderpoints","YearlyTraderpoints"] Yes
$.oneOf[0].allOf[1].Payload.apps[].pricing.isPaidinteger [0,1] Yes
$.oneOf[0].allOf[1].Payload.apps[].pricing.periodstring ["free","monthly","yearly"] Yes
$.oneOf[0].allOf[1].Payload.apps[].pricing.paymentModestring ["free","usd","traderpoints"] Yes
$.oneOf[0].allOf[1].Payload.apps[].pricing.amountCentsinteger Yes
$.oneOf[0].allOf[1].Payload.apps[].pricing.traderpointsAmountinteger Yes
$.oneOf[0].allOf[1].Payload.apps[].pricing.labelstring Yes
$.oneOf[0].allOf[1].Payload.apps[].accessobject No
$.oneOf[0].allOf[1].Payload.apps[].access.canAccessinteger [0,1] Yes
$.oneOf[0].allOf[1].Payload.apps[].access.isOwnerinteger [0,1] Yes
$.oneOf[0].allOf[1].Payload.apps[].access.isFreeinteger [0,1] Yes
$.oneOf[0].allOf[1].Payload.apps[].access.hasActiveAccessinteger [0,1] Yes
$.oneOf[0].allOf[1].Payload.apps[].access.accessEndDatestring Yes
$.oneOf[0].allOf[1].Payload.apps[].selectedForPostinteger [0,1] No
$.oneOf[1]object Yes
$.oneOf[1].RequestUserAliasstring Yes
$.oneOf[1].RequestPathstring | null Yes
$.oneOf[1].RequestStatus = "Failed" Yes
$.oneOf[1].ResponseCodeinteger Yes
$.oneOf[1].ResponseMessageAPIResponseMessage Yes
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[1].ResponseMessage.oneOf[1]array Yes
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[1].ResponseMessage.oneOf[2]object Yes
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[1].RequestImpersonatedByUserAliasstring No
Response example
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/appsv2/get_list",
    "RequestUserAlias": "example-user",
    "Payload": {
        "apps": []
    }
}
Machine-readable endpoint documentation
GET

/v1/appsv2/get_my_apps

#
Returns apps owned by the current viewer for the App Store setup UI.

Parameters

NameTypeRequiredDefaultDescription
aboutPostID int No 0 Optional post ID used by the newsfeed action to mark which owned apps already use that post.
Request example (cURL)
curl --get \
  'https://ca.appointmenttrader.com/v1/appsv2/get_my_apps' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'aboutPostID={{aboutPostID}}'

Returns

JSON
See the shared response schema and synthetic example.
Response fields
FieldTypeRequiredDescription
$appsv2_get_my_apps_Response Yes
$.oneOf[0] Yes
$.oneOf[0].allOf[0]object Yes
$.oneOf[0].allOf[0].RequestUserAliasstring Yes
$.oneOf[0].allOf[0].RequestPathstring | null Yes
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" Yes
$.oneOf[0].allOf[0].ResponseCodeinteger Yes
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring No
$.oneOf[0].allOf[1]object Yes
$.oneOf[0].allOf[1].Payloadobject Yes
$.oneOf[0].allOf[1].Payload.appsarray Yes
$.oneOf[0].allOf[1].Payload.apps[] No
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0]object No
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].idstring Yes
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].slugstring Yes
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].namestring Yes
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].descriptionstring Yes
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].iconstring Yes
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].entryUrlstring Yes
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].defaultPathstring Yes
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].contentWidthstring Yes
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].dbIDinteger Yes
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].ownerUserIDinteger Yes
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].aboutPostIDinteger Yes
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].priceAmountinteger Yes
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].menuarray Yes
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].isUserCreated = true Yes
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].requiredLogin = true Yes
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].pricingTypestring ["Free","MonthlyUSD","YearlyUSD","MonthlyTraderpoints","YearlyTraderpoints"] Yes
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].pricingobject Yes
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].pricing.typestring ["Free","MonthlyUSD","YearlyUSD","MonthlyTraderpoints","YearlyTraderpoints"] Yes
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].pricing.isPaidinteger [0,1] Yes
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].pricing.periodstring ["free","monthly","yearly"] Yes
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].pricing.paymentModestring ["free","usd","traderpoints"] Yes
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].pricing.amountCentsinteger Yes
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].pricing.traderpointsAmountinteger Yes
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].pricing.labelstring Yes
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].accessobject No
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].access.canAccessinteger [0,1] Yes
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].access.isOwnerinteger [0,1] Yes
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].access.isFreeinteger [0,1] Yes
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].access.hasActiveAccessinteger [0,1] Yes
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].access.accessEndDatestring Yes
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].selectedForPostinteger [0,1] No
$.oneOf[0].allOf[1].Payload.apps[].anyOf[1]array No
$.oneOf[1]object Yes
$.oneOf[1].RequestUserAliasstring Yes
$.oneOf[1].RequestPathstring | null Yes
$.oneOf[1].RequestStatus = "Failed" Yes
$.oneOf[1].ResponseCodeinteger Yes
$.oneOf[1].ResponseMessageAPIResponseMessage Yes
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[1].ResponseMessage.oneOf[1]array Yes
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[1].ResponseMessage.oneOf[2]object Yes
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[1].RequestImpersonatedByUserAliasstring No
Response example
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/appsv2/get_my_apps",
    "RequestUserAlias": "example-user",
    "Payload": {
        "apps": []
    }
}
Machine-readable endpoint documentation
POST

/v1/appsv2/set_about_post

#
Sets or clears an app's About my app post.

Parameters

NameTypeRequiredDefaultDescription
appID int Yes — ATAppsV2.ID of an app owned by the current user.
postID int No 0 Public ATDiscussionPosts.ID with at least two attached images. Pass 0 to clear.
isWritingRequest bool No false Set true to actually persist the app.
Request example (cURL)
curl --request POST \
  'https://ca.appointmenttrader.com/v1/appsv2/set_about_post' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'appID={{appID}}' \
  --data-urlencode 'postID={{postID}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Returns

JSON
See the shared response schema and synthetic example.
Response fields
FieldTypeRequiredDescription
$appsv2_set_about_post_Response Yes
$.oneOf[0] Yes
$.oneOf[0].allOf[0]object Yes
$.oneOf[0].allOf[0].RequestUserAliasstring Yes
$.oneOf[0].allOf[0].RequestPathstring | null Yes
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" Yes
$.oneOf[0].allOf[0].ResponseCodeinteger Yes
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring No
$.oneOf[0].allOf[1]object Yes
$.oneOf[0].allOf[1].Payloadobject Yes
$.oneOf[0].allOf[1].Payload.app Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0]object Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].idstring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].slugstring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].namestring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].descriptionstring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].iconstring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].entryUrlstring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].defaultPathstring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].contentWidthstring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].dbIDinteger Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].ownerUserIDinteger Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].aboutPostIDinteger Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].priceAmountinteger Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].menuarray Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].isUserCreated = true Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].requiredLogin = true Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricingTypestring ["Free","MonthlyUSD","YearlyUSD","MonthlyTraderpoints","YearlyTraderpoints"] Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricingobject Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.typestring ["Free","MonthlyUSD","YearlyUSD","MonthlyTraderpoints","YearlyTraderpoints"] Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.isPaidinteger [0,1] Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.periodstring ["free","monthly","yearly"] Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.paymentModestring ["free","usd","traderpoints"] Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.amountCentsinteger Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.traderpointsAmountinteger Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.labelstring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].accessobject No
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.canAccessinteger [0,1] Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.isOwnerinteger [0,1] Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.isFreeinteger [0,1] Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.hasActiveAccessinteger [0,1] Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.accessEndDatestring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].selectedForPostinteger [0,1] No
$.oneOf[0].allOf[1].Payload.app.anyOf[1]array Yes
$.oneOf[0].allOf[1].Payload.postIDinteger Yes
$.oneOf[1]object Yes
$.oneOf[1].RequestUserAliasstring Yes
$.oneOf[1].RequestPathstring | null Yes
$.oneOf[1].RequestStatus = "Failed" Yes
$.oneOf[1].ResponseCodeinteger Yes
$.oneOf[1].ResponseMessageAPIResponseMessage Yes
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[1].ResponseMessage.oneOf[1]array Yes
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[1].ResponseMessage.oneOf[2]object Yes
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[1].RequestImpersonatedByUserAliasstring No
Response example
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/appsv2/set_about_post",
    "RequestUserAlias": "example-user",
    "Payload": {
        "app": {
            "id": "synthetic-example",
            "slug": "synthetic-example",
            "name": "synthetic-example",
            "description": "synthetic-example",
            "icon": "synthetic-example",
            "entryUrl": "synthetic-example",
            "defaultPath": "synthetic-example",
            "contentWidth": "synthetic-example",
            "dbID": 0,
            "ownerUserID": 0,
            "aboutPostID": 0,
            "priceAmount": 0,
            "menu": [],
            "isUserCreated": true,
            "requiredLogin": true,
            "pricingType": "Free",
            "pricing": {
                "type": "Free",
                "isPaid": 0,
                "period": "free",
                "paymentMode": "free",
                "amountCents": 0,
                "traderpointsAmount": 0,
                "label": "synthetic-example"
            }
        },
        "postID": 0
    }
}
Machine-readable endpoint documentation
POST

/v1/appsv2/set_create

#
Create a new user-published app row in the v2 appstore.

Parameters

NameTypeRequiredDefaultDescription
name string Yes — Display name shown in the appstore card and the host shell.
slug string Yes — Lowercase URL slug ([a-z0-9-]+, 2-64 chars).
entry_url string Yes — Absolute http(s) URL or root-relative path loaded into the sandboxed iframe.
description string No "" Optional short description shown on the appstore card.
icon string No "" Optional sprite reference (e.g. "i-trending-bars"). Empty string allowed.
pricingType string No "Free" One of Free, MonthlyUSD, YearlyUSD, MonthlyTraderpoints, YearlyTraderpoints.
priceAmount int No 0 Price in USD cents for paid monthly/yearly access.
aboutPostID int No 0 Optional public post ID with at least two images to use as the About my app post.
isWritingRequest bool No false Set true to actually persist the app.
Request example (cURL)
curl --request POST \
  'https://ca.appointmenttrader.com/v1/appsv2/set_create' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'name={{name}}' \
  --data-urlencode 'slug={{slug}}' \
  --data-urlencode 'entry_url={{entry_url}}' \
  --data-urlencode 'description={{description}}' \
  --data-urlencode 'icon={{icon}}' \
  --data-urlencode 'pricingType={{pricingType}}' \
  --data-urlencode 'priceAmount={{priceAmount}}' \
  --data-urlencode 'aboutPostID={{aboutPostID}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Returns

JSON
See the shared response schema and synthetic example.
Response fields
FieldTypeRequiredDescription
$appsv2_set_create_Response Yes
$.oneOf[0] Yes
$.oneOf[0].allOf[0]object Yes
$.oneOf[0].allOf[0].RequestUserAliasstring Yes
$.oneOf[0].allOf[0].RequestPathstring | null Yes
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" Yes
$.oneOf[0].allOf[0].ResponseCodeinteger Yes
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring No
$.oneOf[0].allOf[1]object Yes
$.oneOf[0].allOf[1].Payloadobject Yes
$.oneOf[0].allOf[1].Payload.idinteger Yes
$.oneOf[0].allOf[1].Payload.slugstring Yes
$.oneOf[0].allOf[1].Payload.app Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0]object Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].idstring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].slugstring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].namestring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].descriptionstring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].iconstring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].entryUrlstring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].defaultPathstring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].contentWidthstring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].dbIDinteger Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].ownerUserIDinteger Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].aboutPostIDinteger Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].priceAmountinteger Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].menuarray Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].isUserCreated = true Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].requiredLogin = true Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricingTypestring ["Free","MonthlyUSD","YearlyUSD","MonthlyTraderpoints","YearlyTraderpoints"] Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricingobject Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.typestring ["Free","MonthlyUSD","YearlyUSD","MonthlyTraderpoints","YearlyTraderpoints"] Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.isPaidinteger [0,1] Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.periodstring ["free","monthly","yearly"] Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.paymentModestring ["free","usd","traderpoints"] Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.amountCentsinteger Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.traderpointsAmountinteger Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.labelstring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].accessobject No
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.canAccessinteger [0,1] Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.isOwnerinteger [0,1] Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.isFreeinteger [0,1] Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.hasActiveAccessinteger [0,1] Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.accessEndDatestring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].selectedForPostinteger [0,1] No
$.oneOf[0].allOf[1].Payload.app.anyOf[1]array Yes
$.oneOf[1]object Yes
$.oneOf[1].RequestUserAliasstring Yes
$.oneOf[1].RequestPathstring | null Yes
$.oneOf[1].RequestStatus = "Failed" Yes
$.oneOf[1].ResponseCodeinteger Yes
$.oneOf[1].ResponseMessageAPIResponseMessage Yes
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[1].ResponseMessage.oneOf[1]array Yes
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[1].ResponseMessage.oneOf[2]object Yes
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[1].RequestImpersonatedByUserAliasstring No
Response example
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/appsv2/set_create",
    "RequestUserAlias": "example-user",
    "Payload": {
        "id": 0,
        "slug": "synthetic-example",
        "app": {
            "id": "synthetic-example",
            "slug": "synthetic-example",
            "name": "synthetic-example",
            "description": "synthetic-example",
            "icon": "synthetic-example",
            "entryUrl": "synthetic-example",
            "defaultPath": "synthetic-example",
            "contentWidth": "synthetic-example",
            "dbID": 0,
            "ownerUserID": 0,
            "aboutPostID": 0,
            "priceAmount": 0,
            "menu": [],
            "isUserCreated": true,
            "requiredLogin": true,
            "pricingType": "Free",
            "pricing": {
                "type": "Free",
                "isPaid": 0,
                "period": "free",
                "paymentMode": "free",
                "amountCents": 0,
                "traderpointsAmount": 0,
                "label": "synthetic-example"
            }
        }
    }
}
Machine-readable endpoint documentation
POST

/v1/appsv2/set_update

#
Update a user-owned v2 app's storefront setup.

Parameters

NameTypeRequiredDefaultDescription
appID int Yes — ATAppsV2.ID of an app owned by the current user.
name string Yes — Display name shown in the appstore card and the host shell.
entry_url string Yes — Absolute http(s) URL or root-relative path loaded into the sandboxed iframe.
description string No "" Optional short description shown on the appstore card.
icon string No "" Optional sprite reference (e.g. "i-trending-bars"). Empty string allowed.
pricingType string No "Free" One of Free, MonthlyUSD, YearlyUSD, MonthlyTraderpoints, YearlyTraderpoints.
priceAmount int No 0 Price in USD cents for paid monthly/yearly access.
aboutPostID int No 0 Optional public post ID with at least two images to use as the About my app post.
isWritingRequest bool No false Set true to actually persist the app.
Request example (cURL)
curl --request POST \
  'https://ca.appointmenttrader.com/v1/appsv2/set_update' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'appID={{appID}}' \
  --data-urlencode 'name={{name}}' \
  --data-urlencode 'entry_url={{entry_url}}' \
  --data-urlencode 'description={{description}}' \
  --data-urlencode 'icon={{icon}}' \
  --data-urlencode 'pricingType={{pricingType}}' \
  --data-urlencode 'priceAmount={{priceAmount}}' \
  --data-urlencode 'aboutPostID={{aboutPostID}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Returns

JSON
See the shared response schema and synthetic example.
Response fields
FieldTypeRequiredDescription
$appsv2_set_update_Response Yes
$.oneOf[0] Yes
$.oneOf[0].allOf[0]object Yes
$.oneOf[0].allOf[0].RequestUserAliasstring Yes
$.oneOf[0].allOf[0].RequestPathstring | null Yes
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" Yes
$.oneOf[0].allOf[0].ResponseCodeinteger Yes
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring No
$.oneOf[0].allOf[1]object Yes
$.oneOf[0].allOf[1].Payloadobject Yes
$.oneOf[0].allOf[1].Payload.app Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0]object Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].idstring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].slugstring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].namestring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].descriptionstring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].iconstring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].entryUrlstring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].defaultPathstring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].contentWidthstring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].dbIDinteger Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].ownerUserIDinteger Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].aboutPostIDinteger Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].priceAmountinteger Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].menuarray Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].isUserCreated = true Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].requiredLogin = true Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricingTypestring ["Free","MonthlyUSD","YearlyUSD","MonthlyTraderpoints","YearlyTraderpoints"] Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricingobject Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.typestring ["Free","MonthlyUSD","YearlyUSD","MonthlyTraderpoints","YearlyTraderpoints"] Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.isPaidinteger [0,1] Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.periodstring ["free","monthly","yearly"] Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.paymentModestring ["free","usd","traderpoints"] Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.amountCentsinteger Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.traderpointsAmountinteger Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.labelstring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].accessobject No
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.canAccessinteger [0,1] Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.isOwnerinteger [0,1] Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.isFreeinteger [0,1] Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.hasActiveAccessinteger [0,1] Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.accessEndDatestring Yes
$.oneOf[0].allOf[1].Payload.app.anyOf[0].selectedForPostinteger [0,1] No
$.oneOf[0].allOf[1].Payload.app.anyOf[1]array Yes
$.oneOf[1]object Yes
$.oneOf[1].RequestUserAliasstring Yes
$.oneOf[1].RequestPathstring | null Yes
$.oneOf[1].RequestStatus = "Failed" Yes
$.oneOf[1].ResponseCodeinteger Yes
$.oneOf[1].ResponseMessageAPIResponseMessage Yes
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[1].ResponseMessage.oneOf[1]array Yes
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[1].ResponseMessage.oneOf[2]object Yes
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[1].RequestImpersonatedByUserAliasstring No
Response example
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/appsv2/set_update",
    "RequestUserAlias": "example-user",
    "Payload": {
        "app": {
            "id": "synthetic-example",
            "slug": "synthetic-example",
            "name": "synthetic-example",
            "description": "synthetic-example",
            "icon": "synthetic-example",
            "entryUrl": "synthetic-example",
            "defaultPath": "synthetic-example",
            "contentWidth": "synthetic-example",
            "dbID": 0,
            "ownerUserID": 0,
            "aboutPostID": 0,
            "priceAmount": 0,
            "menu": [],
            "isUserCreated": true,
            "requiredLogin": true,
            "pricingType": "Free",
            "pricing": {
                "type": "Free",
                "isPaid": 0,
                "period": "free",
                "paymentMode": "free",
                "amountCents": 0,
                "traderpointsAmount": 0,
                "label": "synthetic-example"
            }
        }
    }
}
Machine-readable endpoint documentation