# Apps

In the Peoplelogic.dev platform, an App represents a connection to another system - whether that's external to your instance or another part of our infrastructure.  Here are a few examples:

* Connected Slack account
* Stripe customer ID
* [HRIS connection via Merge](/guides/synchronizing-org-charts.md)
* [A Performance Management system](/guides/getting-started-with-the-composable-talent-platform/universal-talent-api/performance-management.md)
* Linking an organization to an SSO system

### Storing data from an App

When you connect to an application, there are typically two different types of data - sensitive and non-sensitive.  While this seems intuitive, you should distinguish between things like a Stripe customer ID or a Slack channel ID and a Merge Linked Account Token. &#x20;

Within the App API, we make a clear distinction between the two types - providing `secretData` and `appData` storage. The secretData storage is encrypted within the database (beyond simply encrypting at rest), while appData is not.  You use both storage mechanisms the same way - by PATCHing your App via the API.  Let's take a look.

### Creating and using an App

First, we use the API to create a simple App within the current Organization.  As you can see, we are storing sensitive data (in this case, the returned Merge linked account token) in the secretData.

```http
POST https://api.peoplelogic.dev/api/v1/app
Content-Type: application/json
Authorization: Bearer {{demoOrgToken}}

{
  "type": "pl:sync:merge:hris",
  "internal": true,
  "name": "Demo Connection with MS Entra",
  "externalId": "abc",
  "secretData": {
    "accountToken": "{{entraToken}}"
  }
}
```

This returns a 201 response code when its successful.  You can may have many App instances of the same type, but the combination of type and externalId must be unique.

To edit an App, just execute a PATCH call against the same API endpoint using the ID you received from the previous call.  Here's an example:

```http
PATCH https://api.peoplelogic.dev/api/v1/app/{{previousAppId}}
Content-Type: application/json
Authorization: Bearer {{demoOrgToken}}

{
  "appData": {
    "demo": "Hi there!"
  }
}
```

You'll receive a 200 response code when successful and your data will be updated!


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.peoplelogic.dev/guides/key-concepts/apps.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
