# Applications

Apps are third-party integrations and extensions that extend Caraer functionality. They can provide additional features, connect to external services, include Webhooks for event handling, and offer custom UI components through AppBars. Apps enable the platform ecosystem where companies can integrate with their existing tools and workflows. Apps can be public (available to all companies) or private (company-specific), have pricing models, descriptions, and settings schemas. Apps can include Webhooks with rate limiting and secret-based authentication. The App system enables extensibility and integration capabilities, allowing the platform to connect with external systems and provide additional functionality beyond the core platform features.

## Get a webhook for an app

 - [GET /api/v2/apps/{appUuid}/webhooks/{webhookUuid}](https://developer.caraer.com/apis/applications/getappwebhook.md): Fetches a single webhook that belongs to the specified app.

## Update a webhook for an app

 - [PUT /api/v2/apps/{appUuid}/webhooks/{webhookUuid}](https://developer.caraer.com/apis/applications/updateappwebhookforapp.md): Updates an existing webhook that belongs to the specified app and the authenticated user's selected company.

## Delete a webhook for an app

 - [DELETE /api/v2/apps/{appUuid}/webhooks/{webhookUuid}](https://developer.caraer.com/apis/applications/deleteappwebhook.md): Deletes a webhook that belongs to the specified app and the authenticated user's selected company.

## Get a public app (creator view)

 - [GET /api/v2/apps/public/{uuid}](https://developer.caraer.com/apis/applications/getpublicapp.md): Gets the full app for the creator, including appPublish, appBars, details, and pricing. Returns AppCreatorDTO with everything under App.

## Update a public app (creator edit)

 - [PUT /api/v2/apps/public/{uuid}](https://developer.caraer.com/apis/applications/updatepublicapp.md): Updates a public app with the full creator payload (label, description, details, pricing, settingsSchema, appBars). Send the entire AppCreatorDTO as returned by GET. Returns the updated app as AppCreatorDTO.

## Delete a private app

 - [DELETE /api/v2/apps/private/{uuid}](https://developer.caraer.com/apis/applications/deleteprivateapp.md): Deletes a private app owned by the current company. An active installation is uninstalled first. The app then disappears from the company.

## Uninstall an application

 - [POST /api/v2/apps/{uuid}/uninstall](https://developer.caraer.com/apis/applications/uninstallapp.md): Removes the installed application specified by its UUID using the provided settings. The request body should contain an AppRequest with the uninstallation settings. Returns the updated application details as a ShowResponse wrapping an AppDTO.

## Load dynamic options for a setting select field

 - [POST /api/v2/apps/{uuid}/settings-schema/options](https://developer.caraer.com/apis/applications/loadsettingoptions.md): Invokes the app serverless function configured on the field's optionsSource and returns options for SINGLE_SELECT / MULTI_SELECT fields. Uses the draft settingsSchema from the installer UI so credentials entered in other fields are available to the loader.

## Rotate application configurations

 - [POST /api/v2/apps/{uuid}/rotate](https://developer.caraer.com/apis/applications/rotateapp.md): Rotates the configuration or settings for the specified application by UUID. On success, returns the updated application details as a ShowResponse wrapping an AppDTO.

## Migrate an app from platform V1 to V2

 - [POST /api/v2/apps/{uuid}/migrate-v2](https://developer.caraer.com/apis/applications/migratetov2.md): Opt-in in-place migration to the shared container runtime. Validates a single runtime, sets platformVersion=2, schedules an async rebuild, and keeps invoking via legacy gcpReference until runtimeStatus is READY.

## Install an application

 - [POST /api/v2/apps/{uuid}/install](https://developer.caraer.com/apis/applications/installapp.md): Installs the application specified by its UUID with optional initial configuration settings. Returns the updated application details as a ShowResponse wrapping an AppDTO.

## Create a webhook for an app (app-scoped path)

 - [POST /api/v2/apps/{appUuid}/webhooks](https://developer.caraer.com/apis/applications/createappwebhookforapp.md): Creates a new webhook for the specified app using normal bearer authentication. The app must be installed for the authenticated user's selected company. This endpoint is an app-scoped equivalent of the generic webhook creation endpoint.

## Test an unsaved webhook for an app

 - [POST /api/v2/apps/{appUuid}/webhooks/test](https://developer.caraer.com/apis/applications/testappwebhookunsaved.md): Generates a test webhook payload from webhook configuration supplied in the request body without persisting the webhook. When recordUuid is omitted, auto-resolves the latest matching record, prefers records that submitted the topic form and that have as many includeRelations as possible, and uses the event from the webhook topic. If no record exists, a simulated record is used and context.testNote (also X-Webhook-Test-Note) explains that plus any missing includeRelations.

## Test a webhook for an app (auto-resolve)

 - [POST /api/v2/apps/{appUuid}/webhooks/test/{webhookUuid}](https://developer.caraer.com/apis/applications/testappwebhookauto.md): Generates a test webhook payload using the latest matching record for the topic object. Form-submission topics prefer a record that submitted that form; includeRelations prefer a record that has as many of those related objects as possible. If no record exists, a simulated record is used. Missing includeRelations and simulated samples are explained in context.testNote and the X-Webhook-Test-Note header. Uses the event type from the webhook topic (updated when the topic action is all).

## Test a webhook for an app

 - [POST /api/v2/apps/{appUuid}/webhooks/test/{webhookUuid}/{recordUuid}/{eventType}](https://developer.caraer.com/apis/applications/testappwebhook.md): Generates a test webhook payload for a specific record and event type. Uses the same payload generation logic as live webhook delivery.

## Retrieve a paginated list of webhooks for an app

 - [POST /api/v2/apps/{appUuid}/webhooks/index](https://developer.caraer.com/apis/applications/getappwebhooks.md): Fetches a paginated and optionally filtered list of webhooks associated with the specified app and the authenticated user's selected company.

## Create a public app

 - [POST /api/v2/apps/public](https://developer.caraer.com/apis/applications/createpublicapp.md): Creates a new public app with the provided label and optional description. Public apps are automatically published for the creating user's company. Returns the created app details as a CreateResponse wrapping an AppDTO.

## Submit a public app for review

 - [POST /api/v2/apps/public/{uuid}/submit](https://developer.caraer.com/apis/applications/submitpublicapp.md): Submits a public app specified by its UUID for review. Returns the submitted app details as a ShowResponse wrapping an AppDTO.

## Review a public app

 - [POST /api/v2/apps/public/{uuid}/review](https://developer.caraer.com/apis/applications/reviewpublicapp.md): Sets review outcome (approve/reject/changes requested), feedback, and optional reviewer notes. Returns the updated app details as a ShowResponse wrapping an AppDTO.

## Create a private app

 - [POST /api/v2/apps/private](https://developer.caraer.com/apis/applications/createprivateapp.md): Creates a new private app with the provided label and optional description. Private apps are automatically installed for the creating user's company. Returns the created app details as a CreateResponse wrapping an AppDTO.

## Retrieve apps created by the logged-in user's selected company

 - [POST /api/v2/apps/my/index](https://developer.caraer.com/apis/applications/getmycreatedapps.md): Fetches a paginated and optionally filtered list of apps where the selected company is the creator. Returns a PaginationResponse containing AppDTO objects.

## Retrieve a paginated list of applications

 - [POST /api/v2/apps/index](https://developer.caraer.com/apis/applications/getapps.md): Fetches a paginated and optionally filtered list of applications. The list is sorted alphabetically by category and name. On success, returns a PaginationResponse containing AppSummaryDTO objects.

## Retrieve application details by UUID

 - [GET /api/v2/apps/{uuid}](https://developer.caraer.com/apis/applications/getapp.md): Fetches details about an application specified by its UUID. Returns the application details as a ShowResponse wrapping an AppDetailDTO.

## Recent webhook delivery decisions

 - [GET /api/v2/apps/{appUuid}/webhooks/{webhookUuid}/deliveries](https://developer.caraer.com/apis/applications/getappwebhookdeliveries.md): Returns the latest match, suppression, and delivery attempts for this webhook on this server. A selected-object topic records MATCHED. A different object records SUPPRESSED. A missing required setting records SKIPPED_MISSING_SETTING.

## Get webhook property topic options

 - [GET /api/v2/apps/{appUuid}/webhooks/property-topics](https://developer.caraer.com/apis/applications/getwebhookpropertytopics.md): Returns property names on an object that can be used in 4-part property_changed webhook topics.

## Get available webhook formats

 - [GET /api/v2/apps/{appUuid}/webhooks/formats](https://developer.caraer.com/apis/applications/getwebhookformats.md): Returns all supported webhook payload formats with their details.

## Get available webhook record events

 - [GET /api/v2/apps/{appUuid}/webhooks/events](https://developer.caraer.com/apis/applications/getwebhookevents.md): Returns all supported record webhook events with their details.

## Get app runtime logs

 - [GET /api/v2/apps/{appUuid}/runtime/logs](https://developer.caraer.com/apis/applications/getruntimelogs.md): Queries Cloud Logging for the shared V2 app container (app-{uuid}) without filtering to a single function.

## Stream app runtime logs (SSE)

 - [GET /api/v2/apps/{appUuid}/runtime/logs/stream](https://developer.caraer.com/apis/applications/streamruntimelogs.md): Server-Sent Events stream of Cloud Logging entries for the shared V2 app container. Polls every ~2.5s and stops after 5 minutes or client disconnect.

## Get current user's company information

 - [GET /api/v2/apps/{appUuid}/me](https://developer.caraer.com/apis/applications/getcompanyinformation.md): Retrieves the company information of the authenticated user. The response includes public details of the user's selected company.

## List predefined marketplace app categories

 - [GET /api/v2/apps/categories](https://developer.caraer.com/apis/applications/listappcategories.md): Returns the allowed category keys and labels for public app marketplace listings.

