# Application types

The Oten Developer ortalp supports three application types: service application, AI application, and game application. You choose a type when creating an app, and you can adjust resources and permissions later.

## What choosing a type affects

* Default resource templates in manage app’s resources (client identity, app capabilities and security, ecosystem connection)
* Suggested scopes/permissions and security defaults
* Type-specific fields in app info and Store categorization
* Review guidelines applicable to your listing

## Types

### Service Application

* Best for business and productivity integrations, backend services, workflow automation, and connectors.
* Typical capabilities:
  * Expose REST/Graph APIs via a Resource Server
  * Support webhooks/events for sync or notifications
  * Authenticate users via SPA or Regular Web OAuth clients; optional M2M Integrate Client for server-to-server
* Notes:
  * Start with least-privilege scopes; request only what you need
  * Ensure idempotency and clear error codes for API endpoints

### AI Application

* Best for apps that provide AI/ML powered features like generation, classification, embeddings, or retrieval.
* Typical capabilities:
  * Model-backed inference endpoints; jobs may be synchronous or asynchronous with callbacks
  * User-facing OAuth client (SPA/Regular) and optional M2M client for batch jobs
  * Usage- and privacy-aware logging; avoid sensitive data in logs
* Notes:
  * Document your model/provider and expected inputs/outputs
  * Consider rate limits and retries for long-running operations

### Game Application

* Best for gaming and entertainment experiences that integrate Oten identity and commerce.
* Typical capabilities:
  * Player identity via OAuth (SPA/Native), optional backend for authoritative state
  * Optional webhooks for purchases, achievements, or telemetry
  * Pricing models for in-app purchases or subscriptions
* Notes:
  * Follow content policies and age ratings where applicable
  * Keep client secrets on server-side only; never in client binaries

## Recommended resources by type (examples)

* Service: Resource Server (business APIs), SPA/Regular OAuth client, optional Integrate (M2M), webhooks
* AI: Resource Server (inference endpoints), Regular/SPA OAuth client, Integrate (M2M) for jobs, webhook callbacks
* Game: SPA/Native OAuth client, optional backend Resource Server, commerce-related webhooks

## Setup checklist

1. Create an app and select a type: [Create an app](broken://pages/HGpkOALzklDoZPMahsSU)
2. Configure authentication and permissions: [Authentication](/openplatform/about-us/user-guide/oten-developer/4.-config-resource-and-security-info/authentication.md), [OAuth and Permissions](https://gitlab.silvertiger.tech/documents/open-platform/-/blob/document/build-your-app/oauth-and-permissions.md)
3. Define resources (APIs, clients, webhooks) under Manage App’s Resources
4. Provide App Info, assets, and marketplace details
5. Test end-to-end in Sandbox: [Test your app](/openplatform/comming-soon/test-your-app.md)
6. Optionally set pricing: see Manage Pricing in the Developer Portal
7. Submit for review: [Publish your app](/openplatform/about-us/user-guide/oten-developer/6.-publish-your-app/publish-your-app.md)

## Testing and quality

* All endpoints must return stable status codes and minimal contract shapes
* Scopes must be enforced server-side; deny by default
* Handle retries and timeouts gracefully; include request IDs in logs
* Keep Sandbox data isolated from production


---

# 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://oten.gitbook.io/openplatform/about-us/application-types.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.
