> ## Documentation Index
> Fetch the complete documentation index at: https://synthetiq.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Service configuration

> Configuring external service credentials and user connections in deployed apps

Deployed apps that integrate with external services (GitHub, Slack, Shopify, LLM providers, etc.) need credentials configured before users can use them. The framework provides admin and user interfaces for managing these credentials.

## Admin service configuration

Admins configure service credentials at `/admin/services`. This page lists all services declared in the app's `scopes.json` and shows their connection status.

<Frame caption="Service list with connection status and configuration">
  <img src="https://mintcdn.com/synthetiq/-jIlH6VGRYQP1yAa/images/platform-docs/deployments/administration/services-list.png?fit=max&auto=format&n=-jIlH6VGRYQP1yAa&q=85&s=0b57a6b18c954b504218c73fabab6d78" alt="Services list page" width="4096" height="2266" data-path="images/platform-docs/deployments/administration/services-list.png" />
</Frame>

<Note>
  Access requires admin-level scopes.
</Note>

### Configuring a service

Click a service to configure it at `/admin/services/:id`. The configuration depends on the service's auth type:

| Auth type | Admin configuration                                 |
| --------- | --------------------------------------------------- |
| OAuth2    | OAuth client ID and client secret from the provider |
| Custom    | Service-specific fields (API keys, base URLs, etc.) |
| None      | No configuration needed                             |

<Frame caption="Service configuration with OAuth credentials and admin settings">
  <img src="https://mintcdn.com/synthetiq/-jIlH6VGRYQP1yAa/images/platform-docs/deployments/administration/service-detail.png?fit=max&auto=format&n=-jIlH6VGRYQP1yAa&q=85&s=afcfb656c0ada4f73ba9db0e4aba0c47" alt="Service configuration page" width="4102" height="2272" data-path="images/platform-docs/deployments/administration/service-detail.png" />
</Frame>

Admin-level service settings (base URLs, API versions, feature flags) are configured here as well. These settings are defined by the service's `SERVICE_CONFIGURATION_OPTIONS` — see [Service configuration](/docs/platform-docs/services-framework/configuration) for how services define these options.

## User service connections

For services that use per-user credentials (OAuth2 services where each user connects their own account), users connect their accounts through the app's connection panel.

<Frame caption="User service connection panel">
  <img src="https://mintcdn.com/synthetiq/-jIlH6VGRYQP1yAa/images/platform-docs/deployments/administration/user-connections.png?fit=max&auto=format&n=-jIlH6VGRYQP1yAa&q=85&s=60636a5ae1d5f25a9057d43447051ae2" alt="User service connections" width="4108" height="2274" data-path="images/platform-docs/deployments/administration/user-connections.png" />
</Frame>

## Credential models

| Model            | How it works                                                                          |
| ---------------- | ------------------------------------------------------------------------------------- |
| Admin-configured | Admin enters credentials once. All users share these credentials.                     |
| Per-user         | Each user connects their own account. Requests use the individual user's credentials. |

Either model can be used with any auth type — OAuth2 services can be configured at the admin level or per-user, and API key services can be shared or user-provided.

App code does not need to know which model is in use. The service client resolves the correct credentials automatically based on the authenticated user's context.

See [Services Framework](/docs/platform-docs/services-framework/overview) for how services are defined, and [Using a service](/docs/platform-docs/services-framework/using-a-service) for how apps consume them.
