Troupeby AliveDocsSign in

Reference

Shared schemas

The named types that procedure inputs and outputs use, in TypeScript notation, as the descriptors define them. A name ending in Out is the lenient output form of the strict input type without it. Index.

AccountGrant · ApiKey · ApiKeyId · AppFormatOut · Appearance · Arch · ArtifactId · ArtifactMetadata · ArtifactSigning · AuthSessionId · AuthSessionInfo · BuildCacheOptions · BuildConfigurationIn · BuildEnvValues · BuildFailure · BuildId · BuildLogLine · BuildOsFamilyIn · BuildSourceInput · BuildTargetIn · BuildTrigger · ClaimName · ClientBinding · CloudArtifact · CloudBuild · CloudBuildSource · CloudRun · CloudScope · CloudScopeOut · CloudShard · CloudUpload · ConnectionId · CredentialCertificate · CredentialId · CredentialMetadata · CredentialProfile · CredentialProjectsIn · Decimal · DeviceSpec · DisplayName · Email · ErrorBody · ErrorCodeOut · ExternalRef · GitRef · GrantId · Invitation · InvitationId · InvitationStatus · IssuerCondition · IssuerId · JsonObject · Member · MemberRole · MemberRoleOut · Month · OidcConnection · Org · OrgId · Orientation · PageCursor · PageLimit · Password · PlannedStep · PlatformId · PresetId · PresetOptions · Project · ProjectId · QuotaClass · QuotaDimension · QuotaLine · ReceivedInvitation · RefPattern · RelativePath · RunId · RunStats · RunStatusOut · RunSuiteSource · Seq · SessionId · ShardId · SignedRequestOut · SigningCredential · Slug · SourceRuleIn · SourceRuleOut · StepId · StepOverride · SubjectTemplate · TimeoutMs · Timestamp · TrustedIssuer · UploadId · User · UserId

AccountGrant

TypeScript
type AccountGrant = {
  id: GrantId
  clientId: string
  clientName: string
  orgId: OrgId
  orgName: string
  projectId?: ProjectId
  projectName?: string
  resource: string
  scopes: CloudScopeOut[]
  via: string
  createdAt: Timestamp
  lastUsedAt?: Timestamp
}

Named types: CloudScopeOut, GrantId, OrgId, ProjectId, Timestamp.

ApiKey

TypeScript
type ApiKey = {
  id: ApiKeyId
  orgId: OrgId
  name: string
  purpose?: string
  start: string
  scopes: CloudScopeOut[]
  projectId?: ProjectId
  status: 'active' | 'revoked' | …
  createdBy: UserId
  createdAt: Timestamp
  expiresAt?: Timestamp
  lastUsedAt?: Timestamp
  revokedAt?: Timestamp
}

Named types: ApiKeyId, CloudScopeOut, OrgId, ProjectId, Timestamp, UserId.

ApiKeyId

TypeScript
type ApiKeyId = string

AppFormatOut

TypeScript
type AppFormatOut = 'iosApp' | 'iosAppArchive' | 'apk' | 'expoProject' | 'catalystApp' | …

Appearance

TypeScript
type Appearance = 'light' | 'dark'

Arch

TypeScript
type Arch = 'arm64' | 'x86_64'

ArtifactId

TypeScript
type ArtifactId = string

ArtifactMetadata

TypeScript
type ArtifactMetadata = {
  bundleId?: string
  version?: string
  build?: string
  urlSchemes?: string[]
  signing?: 'none' | ArtifactSigning
}

Named types: ArtifactSigning.

ArtifactSigning

TypeScript
type ArtifactSigning = { credentialId: string; certificateSha256: string; schemes: string[]; verifier: string }

AuthSessionId

TypeScript
type AuthSessionId = string

AuthSessionInfo

TypeScript
type AuthSessionInfo = {
  id: AuthSessionId
  createdAt: Timestamp
  updatedAt: Timestamp
  expiresAt: Timestamp
  reauthenticatedAt?: Timestamp
  federated?: boolean
  ipAddress?: string
  userAgent?: string
  current: boolean
}

Named types: AuthSessionId, Timestamp.

BuildCacheOptions

TypeScript
type BuildCacheOptions = { restore: boolean; save: boolean }

BuildConfigurationIn

TypeScript
type BuildConfigurationIn = 'debug' | 'release'

BuildEnvValues

TypeScript
type BuildEnvValues = Record<string, string>

BuildFailure

TypeScript
type BuildFailure = { reason: string; message: string; stepId?: string }

BuildId

TypeScript
type BuildId = string

BuildLogLine

TypeScript
type BuildLogLine = {
  seq: Seq
  at: Timestamp
  stepId?: string
  stream: 'stdout' | 'stderr' | 'runner' | 'controller' | …
  line: string
}

Named types: Seq, Timestamp.

BuildOsFamilyIn

TypeScript
type BuildOsFamilyIn = 'ios' | 'android'

BuildSourceInput

TypeScript
type BuildSourceInput =
  | {
      kind: 'git'
      url: string  // 1–2048 chars
      ref: GitRef
      submodules?: boolean
      lfs?: boolean
    }
  | { kind: 'tarball' }

Named types: GitRef.

BuildTargetIn

TypeScript
type BuildTargetIn = 'simulator' | 'emulator' | 'deviceInternal' | 'store'

BuildTrigger

TypeScript
type BuildTrigger = {
  branch?: GitRef
  defaultBranch?: GitRef
  pullRequest?: integer  // ≥ 1
}

Named types: GitRef.

ClaimName

TypeScript
type ClaimName = string

ClientBinding

TypeScript
type ClientBinding = {
  claim: 'client_id' | 'azp' | null
  allowed: string[]  // ≤ 32 items; each /^[\x21-\x7e]{1,256}$/
}

CloudArtifact

TypeScript
type CloudArtifact = {
  artifactId: ArtifactId
  projectId: ProjectId
  buildId: BuildId
  name: string
  format: AppFormatOut
  contentType: string
  bytes: integer
  sha256: string
  metadata: ArtifactMetadata
  createdAt: Timestamp
  expiresAt?: Timestamp
}

Named types: AppFormatOut, ArtifactId, ArtifactMetadata, BuildId, ProjectId, Timestamp.

CloudBuild

TypeScript
type CloudBuild = {
  buildId: BuildId
  projectId: ProjectId
  status: 'awaitingSource' | 'queued' | 'starting' | 'running' | 'succeeded' | 'failed' | 'errored' | 'canceled' | …
  statusDetail?: string
  source: CloudBuildSource
  osFamily: 'ios' | 'android' | …
  target: 'simulator' | 'emulator' | 'deviceInternal' | 'store' | …
  configuration?: 'debug' | 'release' | …
  appRoot?: string
  preset?: { id: string; version: string }
  toolchain?: string
  image?: { id: string; digest: string }
  attempt: integer
  timeoutMs: integer
  failure?: BuildFailure
  error?: ErrorBody
  artifactIds: ArtifactId[]
  metadata: Record<string, unknown>
  envNames?: string[]
  uploadId?: UploadId
  signingCredentialId?: CredentialId
  createdAt: Timestamp
  queuedAt?: Timestamp
  startedAt?: Timestamp
  endedAt?: Timestamp
}

Named types: ArtifactId, BuildFailure, BuildId, CloudBuildSource, CredentialId, ErrorBody, ProjectId, Timestamp, UploadId.

CloudBuildSource

TypeScript
type CloudBuildSource = { kind: 'git' | 'tarball' | …; url?: string; ref?: string; revision?: string }

CloudRun

TypeScript
type CloudRun = {
  runId: RunId
  projectId: ProjectId
  status: RunStatusOut
  shardCount: integer
  workers: integer
  shards: {
    queued: integer
    running: integer
    passed: integer
    failed: integer
    errored: integer
    timedOut: integer
    canceled: integer
  }
  stats: RunStats
  timeoutMs: integer
  createdAt: Timestamp
  startedAt?: Timestamp
  endedAt?: Timestamp
}

Named types: ProjectId, RunId, RunStats, RunStatusOut, Timestamp.

CloudScope

TypeScript
type CloudScope = 'runtime:read' | 'runtime:admin' | 'devices:read' | 'devices:acquire' | 'devices:drive' | 'apps:install' | 'apps:debug' | 'logs:read' | 'runs:read' | 'runs:report' | 'account:read' | 'account:write' | 'org:read' | 'org:manage' | 'projects:read' | 'projects:write' | 'keys:read' | 'keys:write' | 'usage:read' | 'builds:read' | 'builds:write' | 'artifacts:read' | 'artifacts:write' | 'signing:use' | 'admin:read' | 'admin:write'

CloudScopeOut

TypeScript
type CloudScopeOut = 'runtime:read' | 'runtime:admin' | 'devices:read' | 'devices:acquire' | 'devices:drive' | 'apps:install' | 'apps:debug' | 'logs:read' | 'runs:read' | 'runs:report' | 'account:read' | 'account:write' | 'org:read' | 'org:manage' | 'projects:read' | 'projects:write' | 'keys:read' | 'keys:write' | 'usage:read' | 'builds:read' | 'builds:write' | 'artifacts:read' | 'artifacts:write' | 'signing:use' | 'admin:read' | 'admin:write' | …

CloudShard

TypeScript
type CloudShard = {
  shardId: ShardId
  runId: RunId
  index: integer
  total: integer
  status: RunStatusOut
  attempt: integer
  sessionIds: SessionId[]
  exitCode?: integer
  stats?: RunStats
  error?: ErrorBody
  startedAt?: Timestamp
  endedAt?: Timestamp
}

Named types: ErrorBody, RunId, RunStats, RunStatusOut, SessionId, ShardId, Timestamp.

CloudUpload

TypeScript
type CloudUpload = {
  uploadId: UploadId
  projectId: ProjectId
  purpose: string
  state: 'open' | 'complete' | 'expired' | …
  byteBudget: integer
  bytesGranted: integer
  maxFiles: integer
  filesGranted: integer
  expiresAt: Timestamp
}

Named types: ProjectId, Timestamp, UploadId.

ConnectionId

TypeScript
type ConnectionId = string

CredentialCertificate

TypeScript
type CredentialCertificate = {
  serial: string
  sha1: string
  sha256: string
  subject: string
  notBefore: Timestamp
  notAfter: Timestamp
  pem?: string
}

Named types: Timestamp.

CredentialId

TypeScript
type CredentialId = string

CredentialMetadata

TypeScript
type CredentialMetadata = {
  keyId?: string
  issuerId?: string
  teamId?: string
  appleCertificateId?: string
  keyAlias?: string
  generated?: boolean
  profiles?: CredentialProfile[]
  certificate?: CredentialCertificate
}

Named types: CredentialCertificate, CredentialProfile.

CredentialProfile

TypeScript
type CredentialProfile = { bundleId: string; uuid: string; name: string; type: string; expiresAt: Timestamp }

Named types: Timestamp.

CredentialProjectsIn

TypeScript
type CredentialProjectsIn = 'all' | ProjectId[]

Named types: ProjectId.

Decimal

TypeScript
type Decimal = string

DeviceSpec

TypeScript
type DeviceSpec = {
  platform: PlatformId
  deviceType?: string  // 1–128 chars
  os?: string  // 1–32 chars
  arch?: Arch
  variant?: string  // 1–64 chars
  locale?: string  // ≤ 35 chars; /^[A-Za-z]{2,8}(-[A-Za-z0-9]{1,8})*$/
  timeZone?: string  // 1–64 chars
  orientation?: Orientation
  appearance?: Appearance
  labels?: Record<string, string>
}

Named types: Appearance, Arch, Orientation, PlatformId.

DisplayName

TypeScript
type DisplayName = string

Email

TypeScript
type Email = string

ErrorBody

TypeScript
type ErrorBody = {
  code: ErrorCodeOut
  message: string
  data: JsonObject
  retryable: boolean
  requestId: string
}

Named types: ErrorCodeOut, JsonObject.

ErrorCodeOut

TypeScript
type ErrorCodeOut = 'VALIDATION' | 'CONTRACT_UNSUPPORTED' | 'UNAUTHENTICATED' | 'FORBIDDEN' | 'NOT_FOUND' | 'CONFLICT' | 'TIMEOUT' | 'RATE_LIMITED' | 'INTERNAL' | 'CAPABILITY_UNSUPPORTED' | 'CAPACITY_UNAVAILABLE' | 'HOST_LOST' | 'SESSION_NOT_READY' | 'SESSION_ENDED' | 'SESSION_BUSY' | 'DEVICE_SPEC_INVALID' | 'DEVICE_BOOT_FAILED' | 'DEVICE_LOST' | 'DEVICE_DRIVER_FAILED' | 'DEVICE_MEDIA_FAILED' | 'DEVICE_INPUT_UNAVAILABLE' | 'APP_NOT_INSTALLED' | 'APP_NOT_RUNNING' | 'APP_INSTALL_FAILED' | 'APP_LAUNCH_FAILED' | 'APP_CRASHED' | 'LOCATOR_NOT_FOUND' | 'LOCATOR_NOT_ACTIONABLE' | 'LOCATOR_STRICT_VIOLATION' | 'LOCATOR_REF_STALE' | 'SECRET_UNAVAILABLE' | 'JS_RUNTIME_UNAVAILABLE' | 'QUOTA_EXCEEDED' | 'ORG_SUSPENDED' | 'PROJECT_SUSPENDED' | 'SERVICE_SUSPENDED' | 'PROJECT_REQUIRED' | 'PLACEMENT_MISMATCH' | 'ENVIRONMENT_HOST_UNSUPPORTED' | 'ENVIRONMENT_XCODE_MISSING' | 'ENVIRONMENT_XCODE_SETUP_INCOMPLETE' | 'ENVIRONMENT_IOS_RUNTIME_MISSING' | 'ENVIRONMENT_ANDROID_SDK_MISSING' | 'ENVIRONMENT_ANDROID_IMAGE_MISSING' | 'ENVIRONMENT_ADB_UNAVAILABLE' | 'ENVIRONMENT_DRIVER_NOT_INSTALLED' | 'ENVIRONMENT_TOOL_MISSING' | 'ENVIRONMENT_UNVERIFIED' | 'ENVIRONMENT_DEVICE_HUB_ACTIVE' | 'ENVIRONMENT_GUI_SESSION_MISSING' | 'ENVIRONMENT_PORTS_UNAVAILABLE' | 'ENVIRONMENT_RESERVED_RESOURCE' | 'ENVIRONMENT_DISK_LOW' | 'ENVIRONMENT_PLATFORM_DISABLED' | …

ExternalRef

TypeScript
type ExternalRef = string

GitRef

TypeScript
type GitRef = string

GrantId

TypeScript
type GrantId = string

Invitation

TypeScript
type Invitation = {
  id: InvitationId
  orgId: OrgId
  email: string
  role: MemberRoleOut
  status: 'pending' | 'accepted' | 'revoked' | 'expired' | …
  invitedBy: UserId
  createdAt: Timestamp
  expiresAt: Timestamp
}

Named types: InvitationId, MemberRoleOut, OrgId, Timestamp, UserId.

InvitationId

TypeScript
type InvitationId = string

InvitationStatus

TypeScript
type InvitationStatus = 'pending' | 'accepted' | 'revoked' | 'expired'

IssuerCondition

TypeScript
type IssuerCondition = { claim: ClaimName; op: 'eq' | 'glob' | 'in'; value: string | string[] }

Named types: ClaimName.

IssuerId

TypeScript
type IssuerId = string

JsonObject

TypeScript
type JsonObject = Record<string, unknown>

Member

TypeScript
type Member = { userId: UserId; email: string; name: string; role: MemberRoleOut; joinedAt: Timestamp }

Named types: MemberRoleOut, Timestamp, UserId.

MemberRole

TypeScript
type MemberRole = 'owner' | 'admin' | 'member'

MemberRoleOut

TypeScript
type MemberRoleOut = 'owner' | 'admin' | 'member' | …

Month

TypeScript
type Month = string

OidcConnection

TypeScript
type OidcConnection = {
  id: ConnectionId
  ownerKind: 'org' | 'deployment' | …
  orgId?: OrgId
  mode: 'linked' | 'claim' | …
  name: string
  issuer: string
  clientId: string
  scopes: string[]
  allowedAlgs: ('EdDSA' | 'ES256' | 'RS256' | …)[]
  verifiedDomains: string[]
  status: 'active' | 'disabled' | …
  signInPath: string
  createdAt: Timestamp
  updatedAt: Timestamp
}

Named types: ConnectionId, OrgId, Timestamp.

Org

TypeScript
type Org = {
  id: OrgId
  name: string
  slug: string
  status: 'active' | 'suspended' | …
  placementScope: 'org' | 'project' | …
  createdAt: Timestamp
  role?: MemberRoleOut
}

Named types: MemberRoleOut, OrgId, Timestamp.

OrgId

TypeScript
type OrgId = string

Orientation

TypeScript
type Orientation = 'portrait' | 'portraitUpsideDown' | 'landscapeLeft' | 'landscapeRight'

PageCursor

TypeScript
type PageCursor = string

PageLimit

TypeScript
type PageLimit = integer

Password

TypeScript
type Password = string

PlannedStep

TypeScript
type PlannedStep = {
  id: StepId
  version: integer  // 1–1000
  inputs: Record<string, unknown>
}

Named types: StepId.

PlatformId

TypeScript
type PlatformId = string

PresetId

TypeScript
type PresetId = string

PresetOptions

TypeScript
type PresetOptions = Record<string, string | number | boolean>

Project

TypeScript
type Project = {
  id: ProjectId
  orgId: OrgId
  slug: string
  name: string
  externalRef?: string
  archivedAt?: Timestamp
  createdAt: Timestamp
  updatedAt: Timestamp
}

Named types: OrgId, ProjectId, Timestamp.

ProjectId

TypeScript
type ProjectId = string

QuotaClass

TypeScript
type QuotaClass = string

QuotaDimension

TypeScript
type QuotaDimension = 'placement_units' | 'devices' | 'queued_sessions' | 'builds' | 'test_shards' | 'projects' | 'storage_bytes' | 'device_seconds' | 'build_seconds' | 'test_run_seconds'

QuotaLine

TypeScript
type QuotaLine = {
  scope: 'org' | 'project' | …
  projectId?: ProjectId
  kind: 'concurrency' | 'period' | …
  dimension: string
  class: string
  limit?: integer
  source: 'org' | 'plan' | 'project' | …
  inUse?: integer
  used?: Decimal
}

Named types: Decimal, ProjectId.

ReceivedInvitation

TypeScript
type ReceivedInvitation = {
  id: InvitationId
  orgId: OrgId
  orgName: string
  role: MemberRoleOut
  expiresAt: Timestamp
}

Named types: InvitationId, MemberRoleOut, OrgId, Timestamp.

RefPattern

TypeScript
type RefPattern = string

RelativePath

TypeScript
type RelativePath = string

RunId

TypeScript
type RunId = string

RunStats

TypeScript
type RunStats = {
  expected: integer
  unexpected: integer
  flaky: integer
  skipped: integer
  errored: integer
}

RunStatusOut

TypeScript
type RunStatusOut = 'queued' | 'running' | 'passed' | 'failed' | 'errored' | 'timedOut' | 'canceled' | …

RunSuiteSource

TypeScript
type RunSuiteSource =
  | {
      dir: string  // 2–4096 chars
    }
  | {
      bundle: {
        bytes: integer  // 1–67108864
        sha256: string  // /^[0-9a-f]{64}$/
      }
    }

Seq

TypeScript
type Seq = integer

SessionId

TypeScript
type SessionId = string

ShardId

TypeScript
type ShardId = string

SignedRequestOut

TypeScript
type SignedRequestOut = {
  method: 'GET' | 'PUT' | …
  url: string
  headers: Record<string, string>
  expiresAt: Timestamp
}

Named types: Timestamp.

SigningCredential

TypeScript
type SigningCredential = {
  credentialId: CredentialId
  orgId: OrgId
  kind: 'ascApiKey' | 'androidUploadKeystore' | 'iosDistributionIdentity' | …
  name: string
  status: 'active' | 'deleted' | …
  projects: 'all' | ProjectId[]
  allowTarballs: boolean
  parentId?: CredentialId
  version: integer
  createdBy: string
  createdAt: Timestamp
  updatedAt: Timestamp
  rotatedAt?: Timestamp
  lastUsedAt?: Timestamp
  deletedAt?: Timestamp
  sourceRefs: SourceRuleOut[]
  metadata: CredentialMetadata
}

Named types: CredentialId, CredentialMetadata, OrgId, ProjectId, SourceRuleOut, Timestamp.

Slug

TypeScript
type Slug = string

SourceRuleIn

TypeScript
type SourceRuleIn = {
  repository: string  // 1–2048 chars
  refs: RefPattern[]  // 1–16 items
}

Named types: RefPattern.

SourceRuleOut

TypeScript
type SourceRuleOut = { repository: string; refs: string[] }

StepId

TypeScript
type StepId = string

StepOverride

TypeScript
type StepOverride = {
  op: 'insertBefore' | 'insertAfter' | 'replace' | 'remove' | …
  at: StepId
  step?: PlannedStep
}

Named types: PlannedStep, StepId.

SubjectTemplate

TypeScript
type SubjectTemplate = string

TimeoutMs

TypeScript
type TimeoutMs = integer

Timestamp

TypeScript
type Timestamp = string

TrustedIssuer

TypeScript
type TrustedIssuer = {
  id: IssuerId
  orgId: OrgId
  name: string
  issuer: string
  jwksUri: string
  audience: string
  acceptedTyp: string[]
  allowedAlgs: ('EdDSA' | 'ES256' | 'RS256' | …)[]
  clientBinding: { claim: string | null; allowed: string[] }
  conditions: { claim: string; op: 'eq' | 'glob' | 'in' | …; value: string | string[] }[]
  scopeSource: 'claim' | 'fixed' | …
  fixedScopes: CloudScopeOut[]
  scopeCeiling: CloudScopeOut[]
  subjectTemplate: string
  subtenantClaim?: string
  projectMapping: 'auto-create' | 'require-existing' | 'fixed' | …
  projectId?: ProjectId
  maxProjects?: integer
  maxTokenLifetimeSeconds: integer
  status: 'active' | 'suspended' | …
  preset?: string
  jwksFetchedAt?: Timestamp
  jwksError?: string
  createdAt: Timestamp
  updatedAt: Timestamp
}

Named types: CloudScopeOut, IssuerId, OrgId, ProjectId, Timestamp.

UploadId

TypeScript
type UploadId = string

User

TypeScript
type User = {
  id: UserId
  email: string
  name: string
  emailVerified: boolean
  image?: string
  createdAt: Timestamp
}

Named types: Timestamp, UserId.

UserId

TypeScript
type UserId = string
esc

    Type to search every page, the protocol reference and the cloud API.