# Application Installation for a Location

**Step 2 of the two-step installation handshake** — the partner confirms the installation and delivers integration settings.
> **Host:** this partner callback is served from the `https://app.alteg.io` > root — **not** under `https://api.alteg.io/api/v1`. The full URL is > `https://app.alteg.io/marketplace/partner/callback`.

After the owner grants access with [Connect an Application to a Location](#tag/Marketplace/operation/marketplace_location_grant_access) the application–location link is **`pending`**. Send this callback with your **Partner Token** (Account settings) to move the link to **`active`**, link the system user, and apply the integration settings below.
**Confirmation window:** you have **12 hours** after the owner connects to send this callback. If you do not confirm in time, the link stays **`pending`** and the owner must reconnect. Verify the resulting status with [Application Status Data for Any Location](#tag/Marketplace/operation/get_marketplace_integration_status).
See the end-to-end [Install & test your app before moderation](marketplace-quickstart.md) guide.

Endpoint: POST /marketplace/partner/callback
Version: 1.0.0
Security: BearerPartner

## Security:

  - `BearerPartner` (unknown)
    http bearer Bearer {PartnerToken}

## Header parameters:

  - `Accept` (string, required)
    e.g. application/vnd.api.v2+json

## Request fields (application/json):

  - `salon_id` (number, required)
    Location ID.
    Example: 123

  - `application_id` (number, required)
    Application ID.
    Example: 123

  - `api_key` (string)
    API-key for messaging module.
    Example: 2f181e2a-5c22-4ae7-9d9b-07104f312c28

  - `webhook_urls` (array)
    Location entity webhook destinations installed with the event flags enabled for this application. Newly installed schedule subscriptions emit update events. The separate application lifecycle callback uses `callback_url`.
    Example: ["https://example.com/webhook"]

  - `chat_url` (string)
    HTTPS URL for the application's Chat iframe in the timetable and appointment UI. For a normal application this is the supported way to install the chat frame during activation.
    Example: https://example.com/altegio/chat

  - `tips_url` (string)
    Tips integration URL. Used only by compatible application installers.
    Example: https://example.com/altegio/tips

  - `channels` (array)
    Notification channels enabled for compatible notification applications.

## Response 201:

  - `201` (unknown)
    All parameters installed

## Response 401:

  - `401` (unknown)
    Unauthorized

## Response 401 fields (application/json):

  - `success` (boolean)
    Response status.
    Example: false

  - `data` (object | null)
    Response data.
    Example: null

  - `meta` (object)
    Additional response data.

  - `meta.message` (string)
    Error message.
    Example: Authentication needed.

## Response 403:

  - `403` (unknown)
    Forbidden

## Response 403 fields (application/json):

  - `success` (boolean)
    Response status.
    Example: false

  - `data` (object | null)
    Response data.
    Example: null

  - `meta` (object)
    Additional response data.

  - `meta.message` (string)
    Error message.
    Example: Access denied.

## Response 422:

  - `422` (unknown)
    Invalid parameters given

## Response 422 fields (application/json):

  - `success` (boolean)
    Response status.
    Example: false

  - `data` (object | null)
    Response data.
    Example: null

  - `meta` (object)
    Additional response data.

  - `meta.message` (string)
    Error message.
    Example: An error has occurred.

  - `meta.errors` (array)
    Set of a validation error messages.

