---
title: "Apply Application Installation Update"
method: POST
path: "/applications/installations/{identifier}/update"
tags: ["Applications"]
---

# Apply Application Installation Update

`POST /applications/installations/{identifier}/update`

## Request

- Base URL: `https://api.crowdin.com/api/v2`
- URL: `https://api.crowdin.com/api/v2/applications/installations/{identifier}/update`
- Auth: none declared
- TypeScript: <https://skmtc.dev/crowdin/apis/crowdin-enterprise-api-v2/docs/applications/installations/:identifier/update/post.ts> (a function with typed inputs; its response is checked against the schema)

**Required scopes:** `application.installation` (Read and Write).

Apply the latest cached manifest to an installed application. Requires `manifestHash` from a recent GET /update call as an optimistic-locking token. If the cached manifest has changed since, returns 409 with the fresh diff in the response body.

## Path parameters

- `identifier` string, required

## Request body

- ApplicationInstallationApplyForm
  - `manifestHash` string, required: Hash of the manifest version the admin reviewed (from GET /update response). Must match the currently cached version, otherwise the apply request fails with 409.

## Response `200`

Application data

- ApplicationInstallationResource: Base schema of resource container. Container is a wrapper object that contains payload in required `data` property and provides space for adding any other metadata.
  - `data` ApplicationInstallationResponseModel, required: Application Installation Response Model
    - `identifier` string
    - `name` string
    - `installedBy` object, nullable
      - `id` integer
      - `username` string
      - `fullName` string
      - `avatarUrl` string
    - `description` string, nullable
    - `logo` string
    - `logoUrl` string, nullable: Absolute URL the logo is served from.
    - `agent` object, nullable
      - `id` integer
      - `username` string
      - `fullName` string
      - `avatarUrl` string
    - `baseUrl` string, nullable
    - `manifestUrl` string, nullable
    - `manifest` object, nullable: The manifest of the installation as authored - the application fields and module definitions as they were installed or last updated, without server-resolved values. `null` for applications installed from a manifest URL
    - `createdAt` string, date-time, nullable
    - `manifestUpdatedAt` string, date-time, nullable: When the installation's manifest was last synced
    - `isManifestOutdated` boolean: Whether the installed manifest is outdated compared to the latest available manifest
    - `modules` union[]
      - union
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `name` string
          - `description` string, nullable
          - `url` string
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `modes` object
          - `scopes` object
          - `iframe` object
          - `fileNamePattern` string
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `modes` object
          - `scopes` object
          - `iframe` object
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `scopes` object
          - `iframe` object
          - `severity` 'high' | 'medium' | 'low'
          - `category` 'context'
          - `refreshPolicy` 'hourly' | 'daily'
          - `title` string
          - `summary` string, nullable: Short one-line summary shown on the inspector card chrome below the title.
          - `recheckUrl` string, nullable
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `scopes` object, nullable
          - `configuratorIframe` object, nullable
          - `compileUrl` string
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `chatCompletionsUrl` string
          - `modelsUrl` string
          - `scopes` object
          - `iframe` object
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `name` string
          - `placement` 'header-alert' | 'glossary': Where the module is allowed to place its announcements
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `scopes` object, nullable
          - `identifier` string
          - `inputSchemaUrl` string, nullable
          - `outputSchemaUrl` string, nullable
          - `iframe` object, nullable
          - `executeUrl` string
          - `validateSettingsUrl` string, nullable
          - `invocationWaitMode` 'sync' | 'taskToken', nullable
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `scopes` object, nullable
          - `iframe` object
          - `logo` string, nullable
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `name` string
          - `mode` string
          - `baseUrl` string
          - `options` object
          - `signaturePatterns` object
          - `description` string
        - object: Class CrowdsourcePanelModuleResponseModel
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `scopes` object
          - `iframe` object
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `name` string
          - `logoUrl` string
          - `signaturePatterns` object
          - `fileType` string
          - `multilingual` boolean
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `name` string
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `modes` object
          - `scopes` object
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `modes` string[]
          - `options` object
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `modes` object
          - `scopes` object
          - `iframe` object
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `getBatchSizeUrl` string
          - `runQaCheckUrl` string
          - `supportsSynchronousRun` boolean: If `true`, the app is called while a translation is being saved and can refuse the save. If `false`, the app is called after the translation is saved and can only report an issue.
          - `scopes` object, nullable
          - `iframe` object, nullable
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `name` string
          - `logoUrl` string
          - `signaturePatterns` object
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `scopes` object
          - `iframe` object
        - object
          - `key` string
          - `name` string
          - `type` string
          - `data` object
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `scopes` object
          - `iframe` object
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `scopes` object
          - `iframe` object
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `scopes` object
          - `iframe` object
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `scopes` object
          - `iframe` object
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `scopes` object
          - `iframe` object
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `scopes` object
          - `iframe` object
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `scopes` object
          - `iframe` object
        - object: Class WorkflowStepTypeModuleResponseModel
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `updateSettingsUrl` string, nullable
          - `deleteSettingsUrl` string, nullable
          - `editorMode` string, nullable
          - `boundaries` object
          - `scopes` object, nullable
          - `iframe` object, nullable
    - `scopes` string[]
    - `permissions` ApplicationsInstallationsPermissions
      - `user` ApplicationsInstallationsPermissionsUser: Use modules permissions instead
        - `value` 'owner' | 'managers' | 'all' | 'guests' | 'restricted'
        - `ids` integer[]: Ids is available only for restricted value
      - `project` ApplicationsInstallationsPermissionsProject
        - `value` 'own' | 'restricted'
        - `ids` integer[]
    - `defaultPermissions` ApplicationsInstallationsDefaultPermissions
      - `user` 'owner'
      - `project` 'own'
    - `limitReached` boolean
    - `stringBasedAvailable` boolean
    - `bundle` union: Where the app is loaded from. Either Crowdin hosts the app in its own storage (`internal`) or the app is served from an external URL such as a local dev server (`external`).
      - ApplicationBundleInternal
        - `mode` 'internal', required: The app is hosted by Crowdin in its own storage (no external URL).
      - ApplicationBundleExternal
        - `mode` 'external', required: The app is served from an external URL (e.g. a local dev server).
        - `url` string, required: URL the app is served from; for local development this is your dev server, e.g. `http://localhost:8080/`.

## Other responses

- `400`: Invalid Request Parameters
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Application installation not found or no cached manifest available
- `409`: manifestHash mismatch — cached manifest changed since diff was fetched. Response body carries the fresh diff so the client can re-render without a round trip.

---

[API](https://skmtc.dev/crowdin/apis/crowdin-enterprise-api-v2.md) - [All operations](https://skmtc.dev/crowdin/apis/crowdin-enterprise-api-v2/llms.txt) - [OpenAPI document](https://skmtc.dev/crowdin/apis/crowdin-enterprise-api-v2/revisions/dc68744c5384?raw)
