Synack mobileapps API

Mobile application assets.

Operations 18

GET /v2/scripts/{scriptUid} #
DELETE /v2/scripts/{scriptUid} #
PATCH /v2/scripts/{scriptUid} #
GET /v2/scripts/{scriptUid}/script-data #
PUT /v2/assets/{assetUid}/binaries/{version} #
DELETE /v2/assets/{assetUid}/binaries/{version} #
GET /v2/assets/{assetUid}/user-roles #
POST /v2/assets/{assetUid}/user-roles #
GET /v2/user-roles/{userRoleUid} #
PATCH /v2/user-roles/{userRoleUid} #
DELETE /v2/user-roles/{userRoleUid} #
PATCH /v2/user-roles/{userRoleUid}/scripts/{scriptUid} #
GET /v2/user-roles/{userRoleUid}/user-role-credentials #
POST /v2/user-roles/{userRoleUid}/user-role-credentials #
PATCH /v2/user-roles/{userRoleUid}/user-role-credentials #
DELETE /v2/user-roles/{userRoleUid}/user-role-credentials #
DELETE /v2/user-role-credentials/{credentialUid} #
POST /v2/user-role-credentials #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/synack-mobileapps-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

synack-mobileapps-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Asset Service Mobileapps API
  version: 2.1.020
  contact:
    name: Synack Engineering
    email: engineering@synack.com
  description: Mobile application assets.
servers:
- url: https://client.synack.com/api/asset
  description: Commercial
- url: https://client.synack.us/api/asset
  description: FedRAMP (Medium)
tags:
- name: mobileapps
  description: Mobile application assets.
paths:
  /v2/scripts/{scriptUid}:
    parameters:
    - $ref: '#/components/parameters/ScriptUIDPath'
    get:
      x-excluded: true
      operationId: getAssetScript
      tags:
      - mobileapps
      description: Gets an asset script.
      responses:
        '200':
          $ref: '#/components/responses/SingleAssetScript'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
      security:
      - OAuth2:
        - asset_gr
        - asset_scan_gr
        - asset_or
        - asset_lr
    delete:
      x-excluded: true
      operationId: deleteAssetScript
      tags:
      - mobileapps
      description: 'Delete a script from a asset.

        '
      responses:
        '204':
          $ref: '#/components/responses/204NoContent'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
      security:
      - OAuth2:
        - asset_gw
        - asset_client_ow
        - asset_boss_ow
        - asset_client_lw
        - asset_boss_lw
    patch:
      x-excluded: true
      operationId: patchAssetScript
      tags:
      - mobileapps
      description: 'Patch the properties of an asset script.

        '
      requestBody:
        description: Script properties to patch.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserRoleScriptUpdate'
      responses:
        '200':
          $ref: '#/components/responses/SingleUserRoleScript'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '422':
          $ref: '#/components/responses/422EntityNotProcessable'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
      security:
      - OAuth2:
        - asset_gw
        - asset_client_ow
        - asset_boss_ow
        - asset_client_lw
        - asset_boss_lw
  /v2/scripts/{scriptUid}/script-data:
    parameters:
    - $ref: '#/components/parameters/ScriptUIDPath'
    get:
      x-excluded: true
      operationId: getAssetScriptData
      tags:
      - mobileapps
      description: Gets the script data for an asset script.
      responses:
        '200':
          description: JSON-representation of the asset script data
          content:
            application/json: {}
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
      security:
      - OAuth2:
        - asset_gr
        - asset_or
        - asset_lr
  /v2/assets/{assetUid}/binaries/{version}:
    parameters:
    - $ref: '#/components/parameters/AssetUIDPath'
    - $ref: '#/components/parameters/ApplicationVersionPath'
    put:
      x-excluded: true
      operationId: putApplicationBinary
      tags:
      - mobileapps
      description: 'Upsert an application binary file or the Url to the binary in the app store.

        '
      requestBody:
        description: Application binary properties to patch.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationBinary'
      parameters:
      - $ref: '#/components/parameters/IfMatch'
      responses:
        '204':
          $ref: '#/components/responses/204NoContent'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '412':
          $ref: '#/components/responses/412PreconditionFailed'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
      security:
      - OAuth2:
        - asset_gw
        - asset_client_ow
        - asset_boss_ow
        - asset_client_lw
        - asset_boss_lw
    delete:
      x-excluded: true
      operationId: deleteApplicationBinary
      tags:
      - mobileapps
      description: 'Delete an application binary.

        '
      responses:
        '204':
          $ref: '#/components/responses/204NoContent'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
      security:
      - OAuth2:
        - asset_gw
        - asset_client_ow
        - asset_boss_ow
        - asset_client_lw
        - asset_boss_lw
  /v2/assets/{assetUid}/user-roles:
    parameters:
    - $ref: '#/components/parameters/AssetUIDPath'
    get:
      x-excluded: true
      operationId: getUserRoles
      tags:
      - mobileapps
      description: Gets a paginated list of all user roles for a mobile or web application. Returns a 409 status code if the asset is not one of these expected types.
      parameters:
      - $ref: '#/components/parameters/PerPageQuery'
      - $ref: '#/components/parameters/PageQuery'
      - in: query
        name: sort
        schema:
          type: string
          enum:
          - name
          - scannable
          - createdAt
          - updatedAt
        description: Optional property to sort results by.
        required: false
      - $ref: '#/components/parameters/SortDirQuery'
      - $ref: '#/components/parameters/ScannableQuery'
      responses:
        '200':
          $ref: '#/components/responses/PaginatedArrayOfUserRoles'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '409':
          $ref: '#/components/responses/409Conflict'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
      security:
      - OAuth2:
        - asset_gr
        - asset_or
        - asset_lr
        - asset_srt_lr
    post:
      x-excluded: true
      operationId: postUserRole
      tags:
      - mobileapps
      description: Adds a user role to a mobile or web application asset. Returns a 409 status code if the asset is not one of these expected types.
      requestBody:
        description: Mobile or web application user role to create.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserRole'
      responses:
        '201':
          $ref: '#/components/responses/SingleUserRole'
        '204':
          $ref: '#/components/responses/204NoContent'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '409':
          $ref: '#/components/responses/409Conflict'
        '422':
          $ref: '#/components/responses/422EntityNotProcessable'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
      security:
      - OAuth2:
        - asset_gw
        - asset_client_ow
        - asset_boss_ow
        - asset_client_lw
        - asset_boss_lw
  /v2/user-roles/{userRoleUid}:
    parameters:
    - $ref: '#/components/parameters/UserRoleUIDPath'
    get:
      x-excluded: true
      operationId: getUserRole
      tags:
      - mobileapps
      description: Retrieves the properties of the supplied user role.
      responses:
        '200':
          $ref: '#/components/responses/SingleUserRole'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
      security:
      - OAuth2:
        - asset_gr
        - asset_or
        - asset_lr
        - asset_srt_lr
    patch:
      x-excluded: true
      operationId: patchUserRole
      tags:
      - mobileapps
      description: Patch properties of a user role for a mobile or web application asset. Will return a 409 status code if the type is not one of these expected types.
      requestBody:
        description: User role to patch.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserRole'
      responses:
        '200':
          $ref: '#/components/responses/SingleUserRole'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '409':
          $ref: '#/components/responses/409Conflict'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
      security:
      - OAuth2:
        - asset_gw
        - asset_client_ow
        - asset_boss_ow
        - asset_client_lw
        - asset_boss_lw
    delete:
      x-excluded: true
      operationId: deleteUserRole
      tags:
      - mobileapps
      description: Delete a user role from a mobile or web application asset. Will return a 409 status code if the type is not one of these expected types.
      responses:
        '204':
          $ref: '#/components/responses/204NoContent'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
      security:
      - OAuth2:
        - asset_gw
        - asset_client_ow
        - asset_boss_ow
        - asset_client_lw
        - asset_boss_lw
  /v2/user-roles/{userRoleUid}/scripts/{scriptUid}:
    parameters:
    - $ref: '#/components/parameters/UserRoleUIDPath'
    - $ref: '#/components/parameters/ScriptUIDPath'
    patch:
      x-excluded: true
      operationId: patchUserRoleScript
      tags:
      - mobileapps
      description: Patch properties of a script that's been assigned to user role for a mobile or web application asset.
      requestBody:
        description: Updatable properties of a script to patch.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserRoleScriptUpdate'
      responses:
        '200':
          $ref: '#/components/responses/SingleUserRoleScript'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '422':
          $ref: '#/components/responses/422EntityNotProcessable'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
      security:
      - OAuth2:
        - asset_gw
        - asset_client_ow
        - asset_boss_ow
        - asset_client_lw
        - asset_boss_lw
  /v2/user-roles/{userRoleUid}/user-role-credentials:
    parameters:
    - $ref: '#/components/parameters/UserRoleUIDPath'
    get:
      x-excluded: true
      operationId: getUserRoleCredentials
      parameters:
      - $ref: '#/components/parameters/PerPageQuery'
      - $ref: '#/components/parameters/PageQuery'
      - in: query
        name: sort
        schema:
          type: string
          enum:
          - status
          - createdAt
          - updatedAt
        description: Optional property to sort results by.
        required: false
      - $ref: '#/components/parameters/SortDirQuery'
      - in: query
        name: userUid
        schema:
          $ref: '#/components/schemas/UserUID'
        required: false
        description: Restricts the credentials to only those available to the user. This query parameter is ignored if the user is a researcher.
      tags:
      - mobileapps
      description: Gets the paginated credentials owned by the user role.
      responses:
        '200':
          $ref: '#/components/responses/PaginatedArrayOfUserRoleCredentials'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
      security:
      - OAuth2:
        - asset_gr
        - asset_or
        - asset_lr
        - asset_srt_lr
    post:
      x-excluded: true
      operationId: postUserRoleCredential
      tags:
      - mobileapps
      description: Add a credential to a user role. Returns 409 Conflict if the credentials do not match the structure of previously created credentials.
      requestBody:
        description: A single credential or an array of credentials.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SingleOrMultiUserRoleCredential'
      responses:
        '201':
          $ref: '#/components/responses/SingleOrMultiUserRoleCredentialResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '409':
          $ref: '#/components/responses/409Conflict'
        '413':
          $ref: '#/components/responses/413RequestEntityTooLarge'
        '422':
          $ref: '#/components/responses/422EntityNotProcessable'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
      security:
      - OAuth2:
        - asset_gw
        - asset_client_ow
        - asset_boss_ow
        - asset_client_lw
        - asset_boss_lw
    patch:
      x-excluded: true
      operationId: patchUserRoleCredentials
      tags:
      - mobileapps
      description: Update the properties of multlipe user role credentials. Returns 409 Conflict when the credential format does not match existing credentials.
      requestBody:
        description: A single credential update or an array of multiple credential updates.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MultiUserRoleCredentialUpdate'
      responses:
        '200':
          $ref: '#/components/responses/MultiUserRoleCredentialResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '409':
          $ref: '#/components/responses/409Conflict'
        '413':
          $ref: '#/components/responses/413RequestEntityTooLarge'
        '422':
          $ref: '#/components/responses/422EntityNotProcessable'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
      security:
      - OAuth2:
        - asset_gw
        - asset_client_ow
        - asset_boss_ow
        - asset_client_lw
        - asset_boss_lw
    delete:
      x-excluded: true
      operationId: deleteUserRoleCredentials
      tags:
      - mobileapps
      parameters:
      - $ref: '#/components/parameters/CredentialUIDQuery'
      description: Delete every credential belonging to the user role.
      responses:
        '204':
          $ref: '#/components/responses/204NoContent'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '413':
          $ref: '#/components/responses/413RequestEntityTooLarge'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
      security:
      - OAuth2:
        - asset_gw
        - asset_client_ow
        - asset_boss_ow
        - asset_client_lw
        - asset_boss_lw
  /v2/user-role-credentials/{credentialUid}:
    parameters:
    - $ref: '#/components/parameters/CredentialUIDPath'
    delete:
      x-excluded: true
      operationId: deleteUserRoleCredential
      tags:
      - mobileapps
      description: Delete a user role credentialt.
      responses:
        '204':
          $ref: '#/components/responses/204NoContent'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
      security:
      - OAuth2:
        - asset_gw
        - asset_client_ow
        - asset_boss_ow
        - asset_client_lw
        - asset_boss_lw
  /v2/user-role-credentials:
    parameters:
    - in: query
      name: organizationUid
      schema:
        $ref: '#/components/schemas/OrganizationUID'
      required: true
      description: Unique identifier for an organization.
    - in: query
      name: listingUid
      schema:
        $ref: '#/components/schemas/ListingUID'
      required: true
      description: Unique identifier for a listing.
    - in: query
      name: userUid
      schema:
        $ref: '#/components/schemas/UserUID'
      required: true
      description: Unique identifier for a user.
    post:
      x-excluded: true
      operationId: assignUserRoleCredentialsToUser
      tags:
      - mobileapps
      description: Assign user role credentials to a user for mobile application or web application assets in a listing.
      responses:
        '200':
          description: The assignments occurred successfully
        '204':
          $ref: '#/components/responses/204NoContent'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '409':
          $ref: '#/components/responses/409Conflict'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
      security:
      - OAuth2:
        - asset_gr
        - asset_or
        - asset_lr
        - asset_srt_lr
components:
  schemas:
    AssetScript:
      allOf:
      - type: object
        description: Script used to test web applications.
        properties:
          uid:
            $ref: '#/components/schemas/UID'
          name:
            type: string
            description: Must be unique across all scripts owned by an asset.
          scriptRole:
            $ref: '#/components/schemas/ScriptRole'
          scriptData:
            $ref: '#/components/schemas/Base64Data'
      - $ref: '#/components/schemas/Updatable'
    CheckerStatus:
      type: string
      enum:
      - unchecked
      - invalid
      - valid
      description: Status reported by automated checkers.
    Updatable:
      allOf:
      - $ref: '#/components/schemas/Creatable'
      - type: object
        properties:
          updatedAt:
            type: string
            format: date-time
            readOnly: true
            description: Automatically set by the server to the time the request was processed whenever the resource is updated.
          updatedBy:
            $ref: '#/components/schemas/OperationUserUID'
    FailedValidation:
      type: object
      required:
      - message
      properties:
        property:
          type: string
          readOnly: true
        value:
          type: string
          readOnly: true
        message:
          type: string
          readOnly: true
    CredentialUID:
      type: string
      pattern: ^[0-9a-f]{12}
      description: Unique identifier for a credential.
    UserRoleCredentialUpdate:
      description: Update to a credential used by an application in context of a user role.
      type: object
      properties:
        credentialData:
          $ref: '#/components/schemas/Base64Data'
        status:
          $ref: '#/components/schemas/CheckerStatus'
        lastCheckedAt:
          type: string
          format: date-time
          description: The last date time the credential was checked.
        sharing:
          $ref: '#/components/schemas/CredentialSharing'
    UserRole:
      allOf:
      - type: object
        properties:
          uid:
            $ref: '#/components/schemas/UID'
          name:
            type: string
            description: Unique name for the role with the mobile or web application.
          scannable:
            type: boolean
            description: Only roles with this property set to true will be scanned by automated scanners.
            default: false
          authenticationStrategies:
            $ref: '#/components/schemas/AuthenticationStrategies'
          credentials:
            type: array
            description: Credentials owned by this role.
            readOnly: true
            items:
              $ref: '#/components/schemas/UserRoleCredentialSummary'
          credentialCounts:
            $ref: '#/components/schemas/CredentialCounts'
      - $ref: '#/components/schemas/Updatable'
    AuthenticationStrategy:
      allOf:
      - type: object
        properties:
          scripts:
            $ref: '#/components/schemas/Scripts'
    MultiUserRoleCredentialUpdate:
      type: array
      items:
        $ref: '#/components/schemas/UserRoleCredentialUpdateMultiItem'
    Base64Data:
      type: string
      description: Base64 encoding of data.
      example: TXkgdm9pY2UgaXMgbXkgcGFzc3dvcmQu
    WritableUID:
      type: string
      pattern: ^[0-9a-f]{12}
      description: Unique Identifier for POST/PATCH/PUT request bodies.
    CredentialSharing:
      type: string
      description: Determines the limits on users that may be assigned; "one" permits only one user to be assigned, "many" places no limit, and "all" prevents any users to explicitly assigned as all users are implicitly allowed to use the credential.
      enum:
      - one
      - many
      - all
    ListingUID:
      type: string
      pattern: ^[-_0-9a-z]{1,50}
      description: Unique identifier for an listing.
      readOnly: true
    IndexedFailedValidations:
      type: object
      properties:
        index:
          type: integer
          description: Zero-based index indicating the which item in request containing an array of items has failed validation.
          readOnly: true
        failedValidation:
          type: array
          description: Array of failed validation rules.
          readOnly: true
          items:
            $ref: '#/components/schemas/FailedValidation'
    UserRoleScriptUpdate:
      type: object
      description: Updatable properties of a script in context of a user role.
      properties:
        status:
          $ref: '#/components/schemas/CheckerStatus'
        error:
          type: string
          description: Optional text of error message. Server will unset this property when status is set to any value other than invalid.
        imageCaptureUrl:
          type: string
          format: uri
          description: Optional Url to image capture of the script execution.
        lastCheckedAt:
          type: string
          format: date-time
          description: The most recent date time the script was run.
        lastSuccessfulAt:
          type: string
          format: date-time
          description: The most recent date time the script was successfully run.
    ApplicationBinary:
      type: object
      properties:
        version:
          type: string
          readOnly: true
        downloadUrl:
          type: string
          format: uri
    ScriptRole:
      type: string
      enum:
      - authentication
      - sessionValidation
      - recordedLogin
    CredentialCounts:
      description: Credential counts by credential status in context of a user role.
      type: object
      readOnly: true
      properties:
        unchecked:
          type: integer
          description: Total of credentials in context of a user role with unchecked status.
        invalid:
          type: integer
          description: Total of credentials in context of a user role with invalid status.
        valid:
          type: integer
          description: Total of credentials in context of a user role with valid status.
    ProblemDetails:
      type: object
      description: 'See [RFC 7807: Problem Details for HTTP APIs](https://tools.ietf.org/html/rfc7807)'
      properties:
        type:
          type: string
          readOnly: true
        title:
          type: string
          readOnly: true
        status:
          type: integer
          format: int32
          minimum: 100
          maximum: 511
          description: HTTP Status code.
          readOnly: true
        detail:
          type: string
          description: Message detailing the problem.
          readOnly: true
        instance:
          type: string
          description: generated problem instance number to correlate with logs
          readOnly: true
        failedValidation:
          type: array
          description: Array of failed validation rules.
          readOnly: true
          items:
            $ref: '#/components/schemas/FailedValidation'
        failedValidations:
          type: array
          description: Array of indexed failed validation rules.
          readOnly: true
          items:
            $ref: '#/components/schemas/IndexedFailedValidations'
        maxBatchSize:
          type: integer
          description: Maximum processable batch size.
          readOnly: true
        batchSize:
          type: integer
          description: Batch size sent when batch is too large.
          readOnly: true
    OperationUserUID:
      type: string
      pattern: ^[0-9a-f]{12}
      readOnly: true
      description: Automatically set by the server to the requesting user whenever the resource is updated. May be a user account or a service account if the action is performed by an automated.
    OrganizationUID:
      type: string
      pattern: ^[-_0-9a-z]{1,50}
      description: Unique identifier for an organization.
    UserRoleUID:
      type: string
      pattern: ^[0-9a-f]{12}
      description: Unique identifier for a mobile or web application user role.
      readOnly: true
    UserRoleCredentialSummary:
      description: Credential used by an application in context of a user role.
      type: object
      properties:
        uid:
          $ref: '#/components/schemas/UID'
        status:
          $ref: '#/components/schemas/CheckerStatus'
        lastCheckedAt:
          type: string
          format: date-time
          description: The last date time the credential was checked.
        sharing:
          $ref: '#/components/schemas/CredentialSharing'
    SingleOrMultiUserRoleCredential:
      oneOf:
      - $ref: '#/components/schemas/UserRoleCredential'
      - type: array
        items:
          $ref: '#/components/schemas/UserRoleCredential'
    ArrayOfUserRoleCredentials:
      type: array
      items:
        $ref: '#/components/schemas/UserRoleCredential'
    UID:
      type: string
      pattern: ^[0-9a-f]{12}
      readOnly: true
      description: Unique Identifier.
    UserRoleScript:
      allOf:
      - type: object
        description: Script used to test a mobile or web applications.
        properties:
          uid:
            $ref: '#/components/schemas/UID'
          status:
            $ref: '#/components/schemas/CheckerStatus'
          filename:
            type: string
            description: Generated script name.
            readOnly: true
          error:
            type: string
            description: Optional text of error message. Server will unset this property when status is set to any value other than invalid.
          imageCaptureUrl:
            type: string
            format: uri
            description: Optional Url to image capture of the script execution.
          lastCheckedAt:
            type: string
            format: date-time
            description: The most reecent date time the script was run.
          lastSuccessfulAt:
            type: string
            format: date-time
            description: The most recent date time the script was successfully run.
    Creatable:
      type: object
      required:
      - createdAt
      - createdBy
      properties:
        createdAt:
          type: string
          format: date-time
          readOnly: true
          description: Automatically set by the server to the time the request was processed whenever the resource was created.
        createdBy:
          $ref: '#/components/schemas/OperationUserUID'
    Scripts:
      type: object
      description: Map of scripts used by this strategy, keyed by script role.
      properties:
        authentication:
          $ref: '#/components/schemas/UserRoleScript'
        sessionValidation:
          $ref: '#/components/schemas/UserRoleScript'
        recordedLogin:
          $ref: '#/components/schemas/UserRoleScript'
    UserUID:
      type: string
      pattern: ^[-_0-9a-z]{1,100}
      description: Unique identifier for a user.
    UserRoleCredentialUpdateMultiItem:
      description: Item in a bulk update to a credentials used by an application in context of a user role.
      allOf:
      - $ref: '#/components/schemas/UserRoleCredentialUpdate'
      - type: object
        required:
        - uid
        properties:
          uid:
            $ref: '#/components/schemas/WritableUID'
    AuthenticationStrategies:
      type: object
      description: Map of authentication strategies for various scanners, keyed by asset scanner name.
      properties:
        tarantulaBurpV2:
          $ref: '#/components/schemas/AuthenticationStrategy'
        burp:
          $ref: '#/components/schemas/AuthenticationStrategy'
    ArrayOfUserRoles:
      type: array
      items:
        $ref: '#/components/schemas/UserRole'
    AssetUID:
      type: string
      pattern: ^[0-9a-f]{24}
      description: Unique identifier for an asset.
    UserRoleCredential:
      description: Credential used by an application in context of a user role.
      allOf:
      - type: object
        required:
     

# --- truncated at 32 KB (42 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/synack/refs/heads/main/openapi/synack-mobileapps-api-openapi.yml