List an app's versions
curl --request GET \
--url https://api.tassyir.io/developer/apps/{appId}/versions \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.tassyir.io/developer/apps/{appId}/versions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": [
{
"id": "<string>",
"version": 4503599627370496,
"apiVersion": "<string>",
"scopes": [
"<string>"
],
"optionalScopes": [
"<string>"
],
"webhookTopics": [
"<string>"
],
"allowedHosts": [
"<string>"
],
"reviewState": "<string>",
"current": true,
"releasedAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"hosting": {
"bundleSha256": "<string>",
"bundleBytes": 4503599627370495,
"files": 4503599627370496,
"main": "<string>",
"lockfile": "<string>",
"scan": {
"status": "pending",
"dispatchedAt": "2023-11-07T05:31:56Z",
"finishedAt": "2023-11-07T05:31:56Z",
"failureCode": "SCAN_DISPATCH_FAILED",
"reasons": [
"<string>"
]
},
"deploy": {
"staging": {
"status": "none",
"deployedAt": "2023-11-07T05:31:56Z",
"errorCode": "SCAN_DISPATCH_FAILED"
},
"production": {
"status": "none",
"deployedAt": "2023-11-07T05:31:56Z",
"errorCode": "SCAN_DISPATCH_FAILED"
}
}
}
}
],
"nextCursor": "<string>"
}{
"statusCode": 400,
"message": [
"<string>"
],
"error": "Bad Request",
"requestId": "<string>"
}{
"code": "DEVELOPER_TOKEN_INVALID",
"message": "<string>",
"statusCode": 123,
"fix": "<string>",
"errors": [
{
"code": "<string>",
"path": "<string>",
"message": "<string>",
"fix": "<string>"
}
],
"path": "<string>",
"requestId": "<string>"
}{
"code": "APP_NOT_FOUND",
"message": "<string>",
"statusCode": 123,
"fix": "<string>",
"errors": [
{
"code": "<string>",
"path": "<string>",
"message": "<string>",
"fix": "<string>"
}
],
"path": "<string>",
"requestId": "<string>"
}{
"code": "DEVELOPER_TOKEN_RATE_LIMITED",
"message": "<string>",
"statusCode": 123,
"fix": "<string>",
"errors": [
{
"code": "<string>",
"path": "<string>",
"message": "<string>",
"fix": "<string>"
}
],
"path": "<string>",
"requestId": "<string>"
}{
"statusCode": 123,
"message": "<string>",
"path": "<string>",
"requestId": "<string>"
}{
"statusCode": 123,
"message": "<string>",
"path": "<string>",
"requestId": "<string>"
}Versions
List an app's versions
Newest first, without their manifests. limit 1-100 (default 20); cursor is the previous nextCursor (versions below that number).
Takes the dashboard session or a developer token (tsy_dt_…); either way the caller is the signed-in user, and only their own account, apps and tokens are reachable.
GET
/
developer
/
apps
/
{appId}
/
versions
List an app's versions
curl --request GET \
--url https://api.tassyir.io/developer/apps/{appId}/versions \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.tassyir.io/developer/apps/{appId}/versions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": [
{
"id": "<string>",
"version": 4503599627370496,
"apiVersion": "<string>",
"scopes": [
"<string>"
],
"optionalScopes": [
"<string>"
],
"webhookTopics": [
"<string>"
],
"allowedHosts": [
"<string>"
],
"reviewState": "<string>",
"current": true,
"releasedAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"hosting": {
"bundleSha256": "<string>",
"bundleBytes": 4503599627370495,
"files": 4503599627370496,
"main": "<string>",
"lockfile": "<string>",
"scan": {
"status": "pending",
"dispatchedAt": "2023-11-07T05:31:56Z",
"finishedAt": "2023-11-07T05:31:56Z",
"failureCode": "SCAN_DISPATCH_FAILED",
"reasons": [
"<string>"
]
},
"deploy": {
"staging": {
"status": "none",
"deployedAt": "2023-11-07T05:31:56Z",
"errorCode": "SCAN_DISPATCH_FAILED"
},
"production": {
"status": "none",
"deployedAt": "2023-11-07T05:31:56Z",
"errorCode": "SCAN_DISPATCH_FAILED"
}
}
}
}
],
"nextCursor": "<string>"
}{
"statusCode": 400,
"message": [
"<string>"
],
"error": "Bad Request",
"requestId": "<string>"
}{
"code": "DEVELOPER_TOKEN_INVALID",
"message": "<string>",
"statusCode": 123,
"fix": "<string>",
"errors": [
{
"code": "<string>",
"path": "<string>",
"message": "<string>",
"fix": "<string>"
}
],
"path": "<string>",
"requestId": "<string>"
}{
"code": "APP_NOT_FOUND",
"message": "<string>",
"statusCode": 123,
"fix": "<string>",
"errors": [
{
"code": "<string>",
"path": "<string>",
"message": "<string>",
"fix": "<string>"
}
],
"path": "<string>",
"requestId": "<string>"
}{
"code": "DEVELOPER_TOKEN_RATE_LIMITED",
"message": "<string>",
"statusCode": 123,
"fix": "<string>",
"errors": [
{
"code": "<string>",
"path": "<string>",
"message": "<string>",
"fix": "<string>"
}
],
"path": "<string>",
"requestId": "<string>"
}{
"statusCode": 123,
"message": "<string>",
"path": "<string>",
"requestId": "<string>"
}{
"statusCode": 123,
"message": "<string>",
"path": "<string>",
"requestId": "<string>"
}Authorizations
dashboardSessiondeveloperToken
The dashboard's session token (Authorization: Bearer <JWT>), as the console sends it. Never paste it into a terminal: it opens every business the user belongs to.
Path Parameters
One of your apps' ids. Another developer's app, or a malformed id, is 404 APP_NOT_FOUND.
Pattern:
^\d{1,20}$Query Parameters
Page size, 1 to 100. A value outside that range is 400.
Required range:
1 <= x <= 100The nextCursor of the previous page, unchanged, with the same filters.
Pattern:
^[1-9]\d{0,8}$