> ## Documentation Index
> Fetch the complete documentation index at: https://docs.withsutro.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List applications for a project



## OpenAPI

````yaml /openapi.yaml get /projects/{projectId}/applications
openapi: 3.1.0
info:
  version: 0.0.5
  title: Sutro Public API
  description: >-
    The API through which apps can be generated, deployed, monitored and
    updated.
servers:
  - description: Production
    url: https://sapi.withsutro.com
security:
  - apiAuth: []
    builderAuth: []
    apiClientId: []
tags:
  - name: projects
    description: >
      Create and manage projects. Projects are the top-level container for all
      Sutro resources including applications,

      specifications, and team collaboration.
  - name: specifications
    description: >
      Generate and retrieve application specifications from attachments using
      AI. Specifications describe the data models,

      actions, and UI structure for your application.
  - name: applications
    description: >
      Generate applications, manage versions, and configure core settings.
      Applications are the executable implementations

      of your specifications.
  - name: attachments
    description: >
      Upload, manage, and delete file attachments for applications. Attachments
      can include Figma files,

      documents, and other assets used in application generation.
  - name: data-models
    description: >
      Define and manage data models and their fields. Models represent the
      entities in your application

      (e.g., Users, Products, Orders) and their properties.
  - name: actions-effects
    description: >
      Actions are things that your application can do, and an action is made up
      of effects.
  - name: triggers
    description: >
      Configure triggers that start workflows automatically based on events like
      schedules, webhooks, or data changes.
  - name: figma-integration
    description: >
      Import Figma designs and generate static code from frames. Connect your
      Figma files to automatically

      generate UI components.
  - name: deployments-assets
    description: >
      Deploy application versions and download generated code bundles. Manage
      your application releases

      and access generated artifacts.
  - name: secrets-configuration
    description: >
      Manage application secrets and environment variables securely. Secrets are
      encrypted and injected

      into your application at runtime.
  - name: ai-assistant
    description: >
      Assistant endpoints for making changes to an application using natural
      language.

      Messages are stored per project to maintain conversation history.
  - name: builders
    description: >
      Create and manage builders. Builders are end users or clients who build
      and run apps

      that integrate with Sutro.
  - name: storage
    description: >
      Upload, download, and manage files in object storage. Files are scoped to
      the authenticated

      customer and can optionally be associated with a builder.
paths:
  /projects/{projectId}/applications:
    parameters:
      - name: projectId
        in: path
        schema:
          type: string
          format: uuid
        required: true
    get:
      tags:
        - applications
      summary: List applications for a project
      operationId: listApplications
      responses:
        '200':
          description: A list of applications for the project
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApplicationRecord'
        '404':
          description: Project not found
components:
  schemas:
    ApplicationRecord:
      description: An application record with timestamps
      allOf:
        - $ref: '#/components/schemas/Application'
        - type: object
          properties:
            createdAt:
              type: string
              format: date-time
            updatedAt:
              type: string
              format: date-time
    Application:
      description: An application
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier for the application
        name:
          type: string
          description: The name of the application
        scode:
          $ref: '#/components/schemas/SCode'
          description: The application's SCode definition
        projectId:
          type: string
          format: uuid
          description: The project this application belongs to
        status:
          $ref: '#/components/schemas/ApplicationStatus'
        isActive:
          type: boolean
          description: >-
            Whether the application is currently active for billing/runtime
            purposes
        serverVersion:
          type: string
          description: The current saved server version (semver)
        lastPublishedAt:
          type: string
          format: date-time
          description: When the application was last published
        lastUnpublishedAt:
          type: string
          format: date-time
          description: When the application was last unpublished
      required:
        - id
        - scode
        - projectId
        - status
        - isActive
    SCode:
      title: SCode representation of an Application
      type: object
      required:
        - requirements
        - appId
        - version
        - appOverview
        - appDescription
        - appDraft
        - domainModel
        - actions
        - triggers
        - userModelId
        - models
      properties:
        requirements:
          type: array
          items:
            type: object
            required:
              - id
              - type
              - description
              - importanceForUser
              - importanceForBusiness
              - frequencyOfUse
            properties:
              id:
                type: string
                pattern: ^@requirement\/
                description: >-
                  The unique identifier for the requirement, e.g.
                  @requirement/userAuth. Must start with "@requirement/".
              type:
                enum:
                  - usability
                  - userJourneyStep
                description: >-
                  The type of the requirement - 'usability' for usability
                  requirements, 'userJourneyStep' for steps of user journeys
              parentId:
                oneOf:
                  - type: string
                    pattern: '@[^/]+\/[^/]+'
                    description: >-
                      The id of the parent construct - for example a requirement
                      (e.g. '@requirement/showLatestSales') or user journey
                      (e.g. '@userJourney/createPost'). If the requirement is a
                      userJourneyStep, the parent must be the user journey.
                  - type: 'null'
                description: >-
                  The id of the parent construct - for example a requirement
                  (e.g. '@requirement/showLatestSales') or user journey (e.g.
                  '@userJourney/createPost'). If the requirement is a
                  userJourneyStep, the parent must be the user journey.
              description:
                type: string
                description: Describe the requirement in a sentence or two
              importanceForUser:
                enum:
                  - critical
                  - required
                  - vital
                  - optional
                description: How important is this requirement for the user
              importanceForBusiness:
                enum:
                  - critical
                  - required
                  - vital
                  - optional
                description: How important is this requirement for the business
              frequencyOfUse:
                enum:
                  - always
                  - often
                  - occasionally
                  - rarely
                description: How often this will be used by users of the product
        appId:
          type: string
        version:
          $ref: '#/components/schemas/VersionString'
        personas:
          type: array
          items:
            type: object
            required:
              - name
            properties:
              name:
                type: string
                description: The name of the persona - be creative!
            description: A persona is a role of a user that might be using the product.
        appOverview:
          oneOf:
            - type: object
              required:
                - name
                - jobToBeDone
                - unsupportedUserJourneys
                - draftUserJourneys
              properties:
                name:
                  type: string
                jobToBeDone:
                  type: string
                unsupportedUserJourneys:
                  type: array
                  items:
                    type: object
                    required:
                      - name
                      - description
                      - reason
                      - steps
                    properties:
                      name:
                        type: string
                      description:
                        type: string
                      reason:
                        type: string
                      steps:
                        type: array
                        items:
                          type: string
                draftUserJourneys:
                  type: array
                  items:
                    type: object
                    required:
                      - name
                      - outcome
                      - steps
                    properties:
                      name:
                        type: string
                      outcome:
                        type: string
                      steps:
                        type: array
                        items:
                          type: string
            - type: 'null'
        appDescription:
          type: string
        appDraft:
          oneOf:
            - type: object
              required:
                - sitemap
                - requirements
              properties:
                sitemap:
                  type: object
                  required:
                    - nodes
                    - edges
                  properties:
                    nodes:
                      type: array
                      items:
                        type: object
                        required:
                          - id
                          - route
                          - content
                        properties:
                          id:
                            type: string
                          route:
                            type: string
                          content:
                            type: array
                            items:
                              type: object
                              required:
                                - title
                                - description
                              properties:
                                title:
                                  type: string
                                description:
                                  type: string
                    edges:
                      type: array
                      items:
                        type: object
                        required:
                          - from
                          - to
                          - type
                        properties:
                          from:
                            type: string
                          to:
                            type: string
                          type:
                            type: string
                requirements:
                  type: array
                  items:
                    type: object
                    required:
                      - id
                      - description
                      - parentId
                    properties:
                      id:
                        type: string
                      description:
                        type: string
                      parentId:
                        oneOf:
                          - type: string
                          - type: 'null'
            - type: 'null'
        domainModel:
          oneOf:
            - type: object
              required:
                - models
              properties:
                models:
                  type: array
                  items:
                    type: object
                    required:
                      - name
                      - fields
                      - requirements
                      - isUserModel
                    properties:
                      name:
                        type: string
                      fields:
                        type: array
                        items:
                          type: object
                          required:
                            - name
                            - type
                          properties:
                            name:
                              type: string
                            type:
                              type: string
                            relationshipType:
                              enum:
                                - hasOne
                                - hasMany
                                - belongsToOne
                                - belongsToMany
                                - manyToMany
                      requirements:
                        type: array
                        items:
                          type: object
                          required:
                            - id
                            - description
                            - parentId
                          properties:
                            id:
                              type: string
                            description:
                              type: string
                            parentId:
                              oneOf:
                                - type: string
                                - type: 'null'
                      isUserModel:
                        type: boolean
            - type: 'null'
        actions:
          type: array
          items:
            allOf:
              - type: object
                required:
                  - id
                  - effects
                  - startEffectId
                properties:
                  id:
                    type: string
                    description: A unique identifier for the action
                  effects:
                    type: array
                    items:
                      $ref: '#/components/schemas/ActionEffect'
                      description: >-
                        The Action Effects that make up this Action;
                        documentation is available via the tools
                  startEffectId:
                    type: string
                    description: The ID of the first effect to execute
                  bindReturnValue:
                    type: string
                  onError:
                    type: object
                    required:
                      - nextId
                    properties:
                      nextId:
                        type: string
                      continueOriginalFlow:
                        type: boolean
              - type: object
                properties:
                  referenceRequirements:
                    type: array
                    items:
                      type: string
                      pattern: ^@requirement\/
                      description: >-
                        The unique identifier for the requirement, e.g.
                        @requirement/userAuth. Must start with "@requirement/".
        triggers:
          type: array
          items:
            allOf:
              - type: object
                required:
                  - trigger
                  - actionId
                  - initialState
                  - validation
                properties:
                  trigger:
                    oneOf:
                      - type: object
                        required:
                          - id
                          - type
                          - eventName
                          - payload
                        properties:
                          id:
                            type: string
                            pattern: ^urn:sutro:trigger:.*$
                          type:
                            const: event
                          eventName:
                            type: string
                            description: The name of the event to listen for.
                          payload:
                            type: object
                            patternProperties:
                              ^.*$: {}
                      - type: object
                        required:
                          - id
                          - type
                          - method
                          - path
                        properties:
                          id:
                            type: string
                            pattern: ^urn:sutro:trigger:.*$
                          type:
                            const: http
                          method:
                            enum:
                              - GET
                              - POST
                              - PUT
                              - DELETE
                              - PATCH
                            description: The HTTP method that will trigger the action.
                          path:
                            type: string
                            description: >-
                              This should be a template string of the form
                              /some/path/:paramName
                          matchSelectors:
                            type: array
                            items:
                              type: string
                              description: >-
                                A SutroExpression that will be resolved to a
                                boolean; The `@source/sutro/request/...` Value
                                Sources will be available.
                  actionId:
                    type: string
                    description: A unique identifier for the action
                  initialState:
                    type: object
                    patternProperties:
                      ^.*$:
                        type: string
                        description: A Sutro expression or a string literal
                  validation:
                    type: array
                    items:
                      type: string
                      description: A Sutro expression
                    description: >-
                      A list of validation expressions that must all resolve to
                      true for the action to be started.
                  isPublic:
                    type: boolean
              - type: object
                properties:
                  referenceRequirements:
                    type: array
                    items:
                      type: string
                      pattern: ^@requirement\/
                      description: >-
                        The unique identifier for the requirement, e.g.
                        @requirement/userAuth. Must start with "@requirement/".
        userModelId:
          type: string
          pattern: '^urn:sutro:model:'
          description: >-
            The unique identifier for the model, e.g.
            urn:sutro:model:supportRequest. Must start with "urn:sutro:model:".
        models:
          type: array
          items:
            allOf:
              - type: object
                required:
                  - id
                  - name
                  - fields
                  - accessControl
                properties:
                  id:
                    type: string
                    pattern: '^urn:sutro:model:'
                    description: >-
                      The unique identifier for the model, e.g.
                      urn:sutro:model:supportRequest. Must start with
                      "urn:sutro:model:".
                    readOnly: true
                  name:
                    type: string
                    readOnly: true
                    description: The name of the model, e.g. Support Request
                  fields:
                    type: array
                    items:
                      type: object
                      required:
                        - id
                        - name
                        - relationshipOwner
                        - min
                        - max
                        - to
                        - accessControl
                      properties:
                        id:
                          type: string
                          pattern: '^urn:sutro:edge:'
                          description: >-
                            The unique identifier for an edge, e.g.
                            urn:sutro:edge:owners. Must start with
                            "urn:sutro:edge:".
                        name:
                          type: string
                          description: The name of the field, e.g. user
                        relationshipOwner:
                          type: boolean
                          description: >-
                            If true, this field's parent model is the owner of
                            the relationship - basically always except if this
                            is a 'belongs to' pointer. Every relationship needs
                            to point to another model's field.
                        min:
                          type: number
                          description: >-
                            The minimum number of values that can be stored in
                            this field
                        max:
                          oneOf:
                            - type: number
                            - type: 'null'
                          description: >-
                            The maximum number of values that can be stored in
                            this field
                        to:
                          oneOf:
                            - type: string
                              pattern: '^urn:sutro:model:'
                              description: >-
                                The unique identifier for the model, e.g.
                                urn:sutro:model:supportRequest. Must start with
                                "urn:sutro:model:".
                            - enum:
                                - p_TEXT
                                - p_IMAGE
                                - p_BOOLEAN
                                - p_NUMBER
                                - p_DATE
                                - p_DATE_TIME
                                - p_TIME
                                - p_ADDRESS
                                - p_PHONE_NUMBER
                                - p_CURRENCY_AMOUNT
                                - p_LINK
                                - p_VIDEO
                                - p_STAR_RATING
                                - p_FILE
                          description: The type of the field's value
                        accessControl:
                          type: object
                          required:
                            - rules
                          properties:
                            rules:
                              type: array
                              items:
                                type: object
                                required:
                                  - access
                                  - criteria
                                properties:
                                  access:
                                    enum:
                                      - allow
                                      - deny
                                    readOnly: true
                                  criteria:
                                    type: string
                                    description: >-
                                      This should be a valid SutroExpression
                                      that resolves to a boolean
                                    readOnly: true
                              readOnly: true
                            defaultAccess:
                              enum:
                                - allow
                                - deny
                              readOnly: true
                        computed:
                          type: string
                          description: Optional computed expression for the field
                        defaultValue:
                          description: The default value for the field
                        enum:
                          type: array
                          items:
                            oneOf:
                              - type: string
                              - type: number
                              - type: boolean
                          description: >-
                            If set, the field is an enum and can only take on
                            these values
                    readOnly: true
                  accessControl:
                    type: object
                    required:
                      - rules
                    properties:
                      rules:
                        type: array
                        items:
                          type: object
                          required:
                            - access
                            - criteria
                          properties:
                            access:
                              enum:
                                - allow
                                - deny
                              readOnly: true
                            criteria:
                              type: string
                              description: >-
                                This should be a valid SutroExpression that
                                resolves to a boolean
                              readOnly: true
                        readOnly: true
                      defaultAccess:
                        enum:
                          - allow
                          - deny
                        readOnly: true
              - type: object
                properties:
                  referenceRequirements:
                    type: array
                    items:
                      type: string
                      pattern: ^@requirement\/
                      description: >-
                        The unique identifier for the requirement, e.g.
                        @requirement/userAuth. Must start with "@requirement/".
    ApplicationStatus:
      type: object
      required:
        - jobs
      properties:
        jobs:
          type: array
          items:
            $ref: '#/components/schemas/Job'
          description: Array of jobs associated with the application
    VersionString:
      description: A version string for an Application
      type: string
      pattern: ^\d{1,3}\.\d{1,3}\.\d{1,6}$
      examples:
        - 1.2.34
    ActionEffect:
      type: object
      required:
        - actionEffectId
        - effect
      properties:
        actionEffectId:
          type: string
          description: >-
            This is a unique ID to identify this action effect within its parent
            Action
        effect:
          type: string
          description: The ID of the effect to run
        params:
          type: object
          patternProperties:
            ^.*$: {}
          description: Static input parameters for the action effect
        bindParams:
          type: object
          patternProperties:
            ^.*$:
              type: string
          description: >-
            Dynamic input parameters for the action effect. These MUST be
            SCodeValues
        next:
          type: string
          description: This is the ID of the next action effect in the sequence (if any)
        onError:
          type: object
          required:
            - nextId
          properties:
            nextId:
              type: string
            continueOriginalFlow:
              type: boolean
    Job:
      type: object
      required:
        - id
        - implementationJobId
        - jobType
        - status
        - customerId
        - projectId
      properties:
        id:
          type: string
          format: uuid
          description: The job ID
        implementationJobId:
          type: string
          description: The implementation job ID
        jobType:
          type: string
          enum:
            - figma_code_generation
            - application_generation
            - follow_up_change
            - slang_edit
            - test
          description: The type of job
        status:
          type: string
          enum:
            - queued
            - active
            - completed
            - failed
            - cancelled
          description: The current status of the job
        customerId:
          type: string
          format: uuid
          description: The customer ID
        projectId:
          type: string
          format: uuid
          description: The project ID
        metadata:
          type: object
          description: Job-specific metadata (structure depends on jobType)
        errorMessage:
          oneOf:
            - type: string
            - type: 'null'
          description: Error message if the job failed
        errorStack:
          oneOf:
            - type: string
            - type: 'null'
          description: Error stack trace if the job failed
        startedAt:
          oneOf:
            - type: string
            - type: 'null'
          description: When the job started
        completedAt:
          oneOf:
            - type: string
            - type: 'null'
          description: When the job completed
  securitySchemes:
    apiAuth:
      description: >-
        Mutual TLS authentication using client certificates. Requires three
        certificate files from your security bundle: `ca.crt` (CA certificate to
        verify the server), `mtls.key` (client private key), and `mtls.crt`
        (client certificate). In curl, use: `--cacert ca.crt --key mtls.key
        --cert mtls.crt`
      type: mutualTLS
    builderAuth:
      description: Builder authentication and authorization
      type: http
      scheme: bearer
      bearerFormat: jwt
    apiClientId:
      description: A unique identifier for the API Client making a request
      type: apiKey
      in: header
      name: x-sutro-api-client

````