En línea ahora  

/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.

Parámetros

NombreTipoObligatorioPredeterminadoDescripción
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.
Ejemplo de solicitud (cURL)
curl --get \
  'https://es.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}}'

Respuesta

JSON
See the shared response schema and synthetic example.
Campos de respuesta
CampoTipoObligatorioDescripción
$appsv2_get_about_post_candidates_Response si
$.oneOf[0] si
$.oneOf[0].allOf[0]object si
$.oneOf[0].allOf[0].RequestUserAliasstring si
$.oneOf[0].allOf[0].RequestPathstring | null si
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" si
$.oneOf[0].allOf[0].ResponseCodeinteger si
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage si
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null si
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array si
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object si
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring No
$.oneOf[0].allOf[1]object si
$.oneOf[0].allOf[1].Payloadobject si
$.oneOf[0].allOf[1].Payload.Candidatesarray si
$.oneOf[0].allOf[1].Payload.Candidates[]object No
$.oneOf[0].allOf[1].Payload.Candidates[].idinteger si
$.oneOf[0].allOf[1].Payload.Candidates[].titlestring si
$.oneOf[0].allOf[1].Payload.Candidates[].bodyPreviewstring si
$.oneOf[0].allOf[1].Payload.Candidates[].urlstring si
$.oneOf[0].allOf[1].Payload.Candidates[].createdDatestring si
$.oneOf[0].allOf[1].Payload.Candidates[].authorAboutPostAuthor si
$.oneOf[0].allOf[1].Payload.Candidates[].author.anyOf[0]object si
$.oneOf[0].allOf[1].Payload.Candidates[].author.anyOf[0].idinteger si
$.oneOf[0].allOf[1].Payload.Candidates[].author.anyOf[0].aliasstring si
$.oneOf[0].allOf[1].Payload.Candidates[].author.anyOf[0].avatarEmojistring si
$.oneOf[0].allOf[1].Payload.Candidates[].author.anyOf[0].profileUrlstring si
$.oneOf[0].allOf[1].Payload.Candidates[].author.anyOf[1]object si
$.oneOf[0].allOf[1].Payload.Candidates[].author.anyOf[1].idnull si
$.oneOf[0].allOf[1].Payload.Candidates[].author.anyOf[1].aliasnull si
$.oneOf[0].allOf[1].Payload.Candidates[].author.anyOf[1].avatarEmojinull si
$.oneOf[0].allOf[1].Payload.Candidates[].author.anyOf[1].profileUrlnull si
$.oneOf[0].allOf[1].Payload.Candidates[].author.anyOf[1].identityHidden = true si
$.oneOf[0].allOf[1].Payload.Candidates[].author.anyOf[1].identityHiddenUntilinteger si
$.oneOf[0].allOf[1].Payload.Candidates[].boardobject si
$.oneOf[0].allOf[1].Payload.Candidates[].board.idinteger si
$.oneOf[0].allOf[1].Payload.Candidates[].board.namestring si
$.oneOf[0].allOf[1].Payload.Candidates[].board.slugstring si
$.oneOf[0].allOf[1].Payload.Candidates[].board.typestring si
$.oneOf[0].allOf[1].Payload.Candidates[].imageMediaCountinteger si
$.oneOf[0].allOf[1].Payload.Candidates[].mediaarray si
$.oneOf[0].allOf[1].Payload.Candidates[].media[]object No
$.oneOf[0].allOf[1].Payload.Candidates[].media[].idinteger si
$.oneOf[0].allOf[1].Payload.Candidates[].media[].thumbUrlstring si
$.oneOf[0].allOf[1].Payload.Candidates[].media[].mediaUrlstring si
$.oneOf[0].allOf[1].Payload.Candidates[].media[].mediaTypestring si
$.oneOf[0].allOf[1].Payload.Candidates[].media[].widthinteger si
$.oneOf[0].allOf[1].Payload.Candidates[].media[].heightinteger si
$.oneOf[0].allOf[1].Payload.Candidates[].media[].titlestring si
$.oneOf[0].allOf[1].Payload.Candidates[].media[].isImageboolean si
$.oneOf[0].allOf[1].Payload.Candidates[].media[].isEmbeddedboolean si
$.oneOf[0].allOf[1].Payload.Pageobject si
$.oneOf[0].allOf[1].Payload.Page.pageSizeinteger si
$.oneOf[0].allOf[1].Payload.Page.ownPostsOnlyinteger [0,1] si
$.oneOf[0].allOf[1].Payload.Page.requiresImageMedia = 1 si
$.oneOf[0].allOf[1].Payload.Page.minimumImageMediaCount = 2 si
$.oneOf[1]object si
$.oneOf[1].RequestUserAliasstring si
$.oneOf[1].RequestPathstring | null si
$.oneOf[1].RequestStatus = "Failed" si
$.oneOf[1].ResponseCodeinteger si
$.oneOf[1].ResponseMessageAPIResponseMessage si
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null si
$.oneOf[1].ResponseMessage.oneOf[1]array si
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[1].ResponseMessage.oneOf[2]object si
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[1].RequestImpersonatedByUserAliasstring No
Ejemplo de respuesta
{
    "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
        }
    }
}
Documentación del endpoint legible por máquinas
GET

/v1/appsv2/get_checkout_url

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

Parámetros

NombreTipoObligatorioPredeterminadoDescripción
appID int si — ATAppsV2.ID of the paid app.
returnURL string No "" Optional same-host URL to return to after checkout.
Ejemplo de solicitud (cURL)
curl --get \
  'https://es.appointmenttrader.com/v1/appsv2/get_checkout_url' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'appID={{appID}}' \
  --data-urlencode 'returnURL={{returnURL}}'

Respuesta

JSON
See the shared response schema and synthetic example.
Campos de respuesta
CampoTipoObligatorioDescripción
$appsv2_get_checkout_url_Response si
$.oneOf[0] si
$.oneOf[0].allOf[0]object si
$.oneOf[0].allOf[0].RequestUserAliasstring si
$.oneOf[0].allOf[0].RequestPathstring | null si
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" si
$.oneOf[0].allOf[0].ResponseCodeinteger si
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage si
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null si
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array si
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object si
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring No
$.oneOf[0].allOf[1]object si
$.oneOf[0].allOf[1].Payloadobject si
$.oneOf[0].allOf[1].Payload.checkoutUrlstring si
$.oneOf[0].allOf[1].Payload.app si
$.oneOf[0].allOf[1].Payload.app.anyOf[0]object si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].idstring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].slugstring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].namestring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].descriptionstring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].iconstring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].entryUrlstring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].defaultPathstring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].contentWidthstring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].dbIDinteger si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].ownerUserIDinteger si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].aboutPostIDinteger si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].priceAmountinteger si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].menuarray si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].isUserCreated = true si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].requiredLogin = true si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricingTypestring ["Free","MonthlyUSD","YearlyUSD","MonthlyTraderpoints","YearlyTraderpoints"] si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricingobject si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.typestring ["Free","MonthlyUSD","YearlyUSD","MonthlyTraderpoints","YearlyTraderpoints"] si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.isPaidinteger [0,1] si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.periodstring ["free","monthly","yearly"] si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.paymentModestring ["free","usd","traderpoints"] si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.amountCentsinteger si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.traderpointsAmountinteger si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.labelstring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].accessobject No
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.canAccessinteger [0,1] si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.isOwnerinteger [0,1] si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.isFreeinteger [0,1] si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.hasActiveAccessinteger [0,1] si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.accessEndDatestring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].selectedForPostinteger [0,1] No
$.oneOf[0].allOf[1].Payload.app.anyOf[1]array si
$.oneOf[1]object si
$.oneOf[1].RequestUserAliasstring si
$.oneOf[1].RequestPathstring | null si
$.oneOf[1].RequestStatus = "Failed" si
$.oneOf[1].ResponseCodeinteger si
$.oneOf[1].ResponseMessageAPIResponseMessage si
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null si
$.oneOf[1].ResponseMessage.oneOf[1]array si
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[1].ResponseMessage.oneOf[2]object si
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[1].RequestImpersonatedByUserAliasstring No
Ejemplo de respuesta
{
    "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"
            }
        }
    }
}
Documentación del endpoint legible por máquinas
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().
Ejemplo de solicitud (cURL)
curl --get \
  'https://es.appointmenttrader.com/v1/appsv2/get_list' \
  --data-urlencode 'key={{API_KEY}}'

Respuesta

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

/v1/appsv2/get_my_apps

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

Parámetros

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

Respuesta

JSON
See the shared response schema and synthetic example.
Campos de respuesta
CampoTipoObligatorioDescripción
$appsv2_get_my_apps_Response si
$.oneOf[0] si
$.oneOf[0].allOf[0]object si
$.oneOf[0].allOf[0].RequestUserAliasstring si
$.oneOf[0].allOf[0].RequestPathstring | null si
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" si
$.oneOf[0].allOf[0].ResponseCodeinteger si
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage si
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null si
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array si
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object si
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring No
$.oneOf[0].allOf[1]object si
$.oneOf[0].allOf[1].Payloadobject si
$.oneOf[0].allOf[1].Payload.appsarray si
$.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 si
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].slugstring si
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].namestring si
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].descriptionstring si
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].iconstring si
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].entryUrlstring si
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].defaultPathstring si
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].contentWidthstring si
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].dbIDinteger si
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].ownerUserIDinteger si
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].aboutPostIDinteger si
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].priceAmountinteger si
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].menuarray si
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].isUserCreated = true si
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].requiredLogin = true si
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].pricingTypestring ["Free","MonthlyUSD","YearlyUSD","MonthlyTraderpoints","YearlyTraderpoints"] si
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].pricingobject si
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].pricing.typestring ["Free","MonthlyUSD","YearlyUSD","MonthlyTraderpoints","YearlyTraderpoints"] si
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].pricing.isPaidinteger [0,1] si
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].pricing.periodstring ["free","monthly","yearly"] si
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].pricing.paymentModestring ["free","usd","traderpoints"] si
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].pricing.amountCentsinteger si
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].pricing.traderpointsAmountinteger si
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].pricing.labelstring si
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].accessobject No
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].access.canAccessinteger [0,1] si
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].access.isOwnerinteger [0,1] si
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].access.isFreeinteger [0,1] si
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].access.hasActiveAccessinteger [0,1] si
$.oneOf[0].allOf[1].Payload.apps[].anyOf[0].access.accessEndDatestring si
$.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 si
$.oneOf[1].RequestUserAliasstring si
$.oneOf[1].RequestPathstring | null si
$.oneOf[1].RequestStatus = "Failed" si
$.oneOf[1].ResponseCodeinteger si
$.oneOf[1].ResponseMessageAPIResponseMessage si
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null si
$.oneOf[1].ResponseMessage.oneOf[1]array si
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[1].ResponseMessage.oneOf[2]object si
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[1].RequestImpersonatedByUserAliasstring No
Ejemplo de respuesta
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/appsv2/get_my_apps",
    "RequestUserAlias": "example-user",
    "Payload": {
        "apps": []
    }
}
Documentación del endpoint legible por máquinas
POST

/v1/appsv2/set_about_post

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

Parámetros

NombreTipoObligatorioPredeterminadoDescripción
appID int si — 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.
Ejemplo de solicitud (cURL)
curl --request POST \
  'https://es.appointmenttrader.com/v1/appsv2/set_about_post' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'appID={{appID}}' \
  --data-urlencode 'postID={{postID}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Respuesta

JSON
See the shared response schema and synthetic example.
Campos de respuesta
CampoTipoObligatorioDescripción
$appsv2_set_about_post_Response si
$.oneOf[0] si
$.oneOf[0].allOf[0]object si
$.oneOf[0].allOf[0].RequestUserAliasstring si
$.oneOf[0].allOf[0].RequestPathstring | null si
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" si
$.oneOf[0].allOf[0].ResponseCodeinteger si
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage si
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null si
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array si
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object si
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring No
$.oneOf[0].allOf[1]object si
$.oneOf[0].allOf[1].Payloadobject si
$.oneOf[0].allOf[1].Payload.app si
$.oneOf[0].allOf[1].Payload.app.anyOf[0]object si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].idstring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].slugstring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].namestring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].descriptionstring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].iconstring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].entryUrlstring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].defaultPathstring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].contentWidthstring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].dbIDinteger si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].ownerUserIDinteger si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].aboutPostIDinteger si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].priceAmountinteger si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].menuarray si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].isUserCreated = true si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].requiredLogin = true si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricingTypestring ["Free","MonthlyUSD","YearlyUSD","MonthlyTraderpoints","YearlyTraderpoints"] si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricingobject si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.typestring ["Free","MonthlyUSD","YearlyUSD","MonthlyTraderpoints","YearlyTraderpoints"] si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.isPaidinteger [0,1] si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.periodstring ["free","monthly","yearly"] si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.paymentModestring ["free","usd","traderpoints"] si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.amountCentsinteger si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.traderpointsAmountinteger si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.labelstring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].accessobject No
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.canAccessinteger [0,1] si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.isOwnerinteger [0,1] si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.isFreeinteger [0,1] si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.hasActiveAccessinteger [0,1] si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.accessEndDatestring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].selectedForPostinteger [0,1] No
$.oneOf[0].allOf[1].Payload.app.anyOf[1]array si
$.oneOf[0].allOf[1].Payload.postIDinteger si
$.oneOf[1]object si
$.oneOf[1].RequestUserAliasstring si
$.oneOf[1].RequestPathstring | null si
$.oneOf[1].RequestStatus = "Failed" si
$.oneOf[1].ResponseCodeinteger si
$.oneOf[1].ResponseMessageAPIResponseMessage si
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null si
$.oneOf[1].ResponseMessage.oneOf[1]array si
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[1].ResponseMessage.oneOf[2]object si
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[1].RequestImpersonatedByUserAliasstring No
Ejemplo de respuesta
{
    "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
    }
}
Documentación del endpoint legible por máquinas
POST

/v1/appsv2/set_create

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

Parámetros

NombreTipoObligatorioPredeterminadoDescripción
name string si — Display name shown in the appstore card and the host shell.
slug string si — Lowercase URL slug ([a-z0-9-]+, 2-64 chars).
entry_url string si — 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.
Ejemplo de solicitud (cURL)
curl --request POST \
  'https://es.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}}'

Respuesta

JSON
See the shared response schema and synthetic example.
Campos de respuesta
CampoTipoObligatorioDescripción
$appsv2_set_create_Response si
$.oneOf[0] si
$.oneOf[0].allOf[0]object si
$.oneOf[0].allOf[0].RequestUserAliasstring si
$.oneOf[0].allOf[0].RequestPathstring | null si
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" si
$.oneOf[0].allOf[0].ResponseCodeinteger si
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage si
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null si
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array si
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object si
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring No
$.oneOf[0].allOf[1]object si
$.oneOf[0].allOf[1].Payloadobject si
$.oneOf[0].allOf[1].Payload.idinteger si
$.oneOf[0].allOf[1].Payload.slugstring si
$.oneOf[0].allOf[1].Payload.app si
$.oneOf[0].allOf[1].Payload.app.anyOf[0]object si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].idstring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].slugstring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].namestring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].descriptionstring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].iconstring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].entryUrlstring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].defaultPathstring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].contentWidthstring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].dbIDinteger si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].ownerUserIDinteger si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].aboutPostIDinteger si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].priceAmountinteger si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].menuarray si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].isUserCreated = true si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].requiredLogin = true si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricingTypestring ["Free","MonthlyUSD","YearlyUSD","MonthlyTraderpoints","YearlyTraderpoints"] si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricingobject si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.typestring ["Free","MonthlyUSD","YearlyUSD","MonthlyTraderpoints","YearlyTraderpoints"] si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.isPaidinteger [0,1] si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.periodstring ["free","monthly","yearly"] si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.paymentModestring ["free","usd","traderpoints"] si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.amountCentsinteger si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.traderpointsAmountinteger si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.labelstring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].accessobject No
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.canAccessinteger [0,1] si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.isOwnerinteger [0,1] si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.isFreeinteger [0,1] si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.hasActiveAccessinteger [0,1] si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.accessEndDatestring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].selectedForPostinteger [0,1] No
$.oneOf[0].allOf[1].Payload.app.anyOf[1]array si
$.oneOf[1]object si
$.oneOf[1].RequestUserAliasstring si
$.oneOf[1].RequestPathstring | null si
$.oneOf[1].RequestStatus = "Failed" si
$.oneOf[1].ResponseCodeinteger si
$.oneOf[1].ResponseMessageAPIResponseMessage si
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null si
$.oneOf[1].ResponseMessage.oneOf[1]array si
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[1].ResponseMessage.oneOf[2]object si
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[1].RequestImpersonatedByUserAliasstring No
Ejemplo de respuesta
{
    "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"
            }
        }
    }
}
Documentación del endpoint legible por máquinas
POST

/v1/appsv2/set_update

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

Parámetros

NombreTipoObligatorioPredeterminadoDescripción
appID int si — ATAppsV2.ID of an app owned by the current user.
name string si — Display name shown in the appstore card and the host shell.
entry_url string si — 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.
Ejemplo de solicitud (cURL)
curl --request POST \
  'https://es.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}}'

Respuesta

JSON
See the shared response schema and synthetic example.
Campos de respuesta
CampoTipoObligatorioDescripción
$appsv2_set_update_Response si
$.oneOf[0] si
$.oneOf[0].allOf[0]object si
$.oneOf[0].allOf[0].RequestUserAliasstring si
$.oneOf[0].allOf[0].RequestPathstring | null si
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" si
$.oneOf[0].allOf[0].ResponseCodeinteger si
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage si
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null si
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array si
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object si
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring No
$.oneOf[0].allOf[1]object si
$.oneOf[0].allOf[1].Payloadobject si
$.oneOf[0].allOf[1].Payload.app si
$.oneOf[0].allOf[1].Payload.app.anyOf[0]object si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].idstring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].slugstring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].namestring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].descriptionstring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].iconstring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].entryUrlstring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].defaultPathstring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].contentWidthstring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].dbIDinteger si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].ownerUserIDinteger si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].aboutPostIDinteger si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].priceAmountinteger si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].menuarray si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].isUserCreated = true si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].requiredLogin = true si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricingTypestring ["Free","MonthlyUSD","YearlyUSD","MonthlyTraderpoints","YearlyTraderpoints"] si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricingobject si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.typestring ["Free","MonthlyUSD","YearlyUSD","MonthlyTraderpoints","YearlyTraderpoints"] si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.isPaidinteger [0,1] si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.periodstring ["free","monthly","yearly"] si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.paymentModestring ["free","usd","traderpoints"] si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.amountCentsinteger si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.traderpointsAmountinteger si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].pricing.labelstring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].accessobject No
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.canAccessinteger [0,1] si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.isOwnerinteger [0,1] si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.isFreeinteger [0,1] si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.hasActiveAccessinteger [0,1] si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].access.accessEndDatestring si
$.oneOf[0].allOf[1].Payload.app.anyOf[0].selectedForPostinteger [0,1] No
$.oneOf[0].allOf[1].Payload.app.anyOf[1]array si
$.oneOf[1]object si
$.oneOf[1].RequestUserAliasstring si
$.oneOf[1].RequestPathstring | null si
$.oneOf[1].RequestStatus = "Failed" si
$.oneOf[1].ResponseCodeinteger si
$.oneOf[1].ResponseMessageAPIResponseMessage si
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null si
$.oneOf[1].ResponseMessage.oneOf[1]array si
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[1].ResponseMessage.oneOf[2]object si
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[1].RequestImpersonatedByUserAliasstring No
Ejemplo de respuesta
{
    "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"
            }
        }
    }
}
Documentación del endpoint legible por máquinas