Skip to content

List apps for a bundle

GET
/developer/organizations/{organizationId}/bundle-apps
curl --request GET \
--url 'https://qinto-api.blotout.io/developer/organizations/9c1d2b34-5e67-4f89-a0b1-2c3d4e5f6a7b/bundle-apps?search=capi&cursorName=Facebook%20CAPI&cursorId=7f3a1c92-4b6d-4e8a-b1d3-5c9e2f7a6b10&limit=50' \
--header 'Authorization: Bearer <token>'

Lists one page of the organization’s published apps, A–Z by name, with each app’s store presence, own price and meter keys. Call it to find the appIds a bundle can use.

Required permissions

  • None beyond a valid token; requires an OAuth token with the developer or bundles scope, for an owner of the addressed organization or a member with the bundles finance area and all apps
organizationId
required

Unique id (UUID) of the organization that owns the bundles, as listed by GET /me under organizations.

string format: uuid

Example

9c1d2b34-5e67-4f89-a0b1-2c3d4e5f6a7b

Unique id (UUID) of the organization that owns the bundles, as listed by GET /me under organizations.

search

Finds apps by part of the name, in any case.

string

Example

capi

Finds apps by part of the name, in any case.

cursorName

The nextCursor.name of the previous page.

string

Example

Facebook CAPI

The nextCursor.name of the previous page.

cursorId

The nextCursor.id of the previous page.

string

Example

7f3a1c92-4b6d-4e8a-b1d3-5c9e2f7a6b10

The nextCursor.id of the previous page.

limit

Page size, 1–200 (default 50).

integer
>= 1 <= 200

Example

50

Page size, 1–200 (default 50).

The organization’s published apps.

Media typeapplication/json
object
apps
required

One page of the organization’s published apps, A–Z by name.

Array<object>

A published app of the organization, as a bundle can use it.

object
appId
required

Unique id of the app. Pass it in appIds on a bundle.

string
name
required

Display name of the app.

string
inStore
required

Whether the app is in the app store. A public bundle can use only these apps.

boolean
pricing
required

What the app costs on its own.

object
model
required

The app’s own pricing model. An app that was never priced is free.

string
Allowed values: fixed fixed_usage usage free
basePriceCents
required

The app’s own base price in US cents, or null when it has none.

integer | null
meterKeys
required

The meter keys the app declares, by the audience that reads them.

object
public
required

Keys of the billing meters in the latest approved version, the ones a public bundle reads. Empty with no approved version.

Array<string>
private
required

Keys of the billing meters in the latest published version, the ones a private bundle reads.

Array<string>
nextCursor
required

Pass both fields as cursorName / cursorId for the next page; null on the last page.

object
name
required

Name of the last listed app.

string
id
required

Id of the last listed app.

string

Example

{
"apps": [
{
"appId": "7f3a1c92-4b6d-4e8a-b1d3-5c9e2f7a6b10",
"name": "Facebook CAPI",
"inStore": true,
"pricing": {
"model": "fixed",
"basePriceCents": 4900
},
"meterKeys": {
"public": [
"events"
],
"private": [
"events"
]
}
}
],
"nextCursor": {
"name": "Facebook CAPI",
"id": "7f3a1c92-4b6d-4e8a-b1d3-5c9e2f7a6b10"
}
}

invalid_params — A path parameter failed validation (for example a malformed UUID); details pinpoints the offending parameter. invalid_body — The JSON body is unparseable or failed schema validation; details pinpoints the offending fields when the body could be parsed.

Media typeapplication/json
object
error
required

Machine-readable error slug; switch on this value rather than on the HTTP status alone.

string
Allowed values: invalid_params invalid_body
details

Field-level validation errors: a tree keyed by input property, each node carrying an errors array of human-readable messages. Render it to help the caller correct the request.

object
key
additional properties

Example

{
"error": "invalid_params",
"details": {
"errors": [],
"properties": {
"teamId": {
"errors": [
"Invalid UUID"
]
}
}
}
}

unauthenticated — The Authorization: Bearer token is missing, malformed, or no longer valid. Generate a team API token or obtain a new OAuth access token.

Media typeapplication/json
object
error
required

Machine-readable error slug; switch on this value rather than on the HTTP status alone.

string
Allowed values: unauthenticated

Example

{
"error": "unauthenticated"
}

forbidden — The bearer credential lacks the required permission or belongs to another team, or its user lacks the organization role a developer operation needs. Update its policies, use a credential bound to the addressed team, or ask an organization owner for the role; message states the reason when one is known. bundles_scope_required — The bearer credential has neither the developer nor the bundles scope, so it reaches no bundle operation whatever the role of its user. Authorize again to get a token with one of them.

Media typeapplication/json
object
error
required

Machine-readable error slug; switch on this value rather than on the HTTP status alone.

string
Allowed values: forbidden bundles_scope_required
message

Human-readable reason for this specific failure, intended for display — do not parse it programmatically.

string

Example

{
"error": "forbidden",
"message": "The Cloudflare API token is invalid or expired."
}

internal — Unexpected server error. Nothing is guaranteed to have been persisted; idempotent operations are safe to retry.

Media typeapplication/json
object
error
required

Machine-readable error slug; switch on this value rather than on the HTTP status alone.

string
Allowed values: internal

Example

{
"error": "internal"
}