> For the complete documentation index, see [llms.txt](https://docs.peoplelogic.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.peoplelogic.dev/guides/key-concepts/apps.md).

# 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
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
