# Overview

The Orchestration SDK for iOS allows your mobile application to communicate with Mosaic, run journeys, and submit client input. It abstracts the communication protocol and manages state between the client and server throughout a journey's lifecycle.

## Capabilities

- Start and manage journeys from the client side
- Handle journey steps and submit client responses
- Maintain state between server responses and client input
- Delegate-based async processing of server responses
- Support for client-facing journey steps


## Requirements

- iOS 13.0+
- Xcode 13.0+


## Installation

CocoaPods
Add the SDK to your `Podfile`:

```ruby
pod 'IdentityOrchestration', '~> 1.0'
```

Then run `pod install`.

Swift Package Manager
Add the package dependency to your Xcode project or `Package.swift`:

```swift
dependencies: [
    .package(url: "https://github.com/TransmitSecurity/identityOrchestration-ios-sdk.git", .upToNextMajor(from: "1.0.0"))
]
```

## Initialization

The SDK can be initialized using either a plist configuration file or SDK parameters.

Plist
Create a `TransmitSecurity.plist` file in your project:

```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>credentials</key>
	<dict>
		<key>baseUrl</key>
		<string>[BASE_URL]</string> <!--Default is https://api.transmitsecurity.io.-->
		<key>clientId</key>
		<string>[CLIENT_ID]</string>
	</dict>
</dict>
</plist>
```

Initialize the SDK at app launch:

```swift
do {
    try TSIdo.initializeSDK()
    TSIdo.delegate = self
} catch {
    debugPrint("[DEBUG]: \(error)")
}
```

SDK parameters
```swift
TSIdo.initialize(
    clientId: Env.clientId,
    options: .init(serverPath: Env.baseUrl)
)
TSIdo.delegate = self
```

Configure the base server URL based on your region:

| Region | Base URL |
|  --- | --- |
| US | `https://api.transmitsecurity.io/` |
| EU | `https://api.eu.transmitsecurity.io/` |
| Canada | `https://api.ca.transmitsecurity.io/` |
| Australia | `https://api.au.transmitsecurity.io/` |
| Japan | `https://api.gasne1-ts01.transmitsecurity.io/` |
| Sandbox | `https://api.sbx.transmitsecurity.io/` |
| Custom domain | `https://<your-domain>.com/` (see [Custom domains](/guides/deployment/custom_domains)) |


## Next steps

- [iOS quickstart](/guides/orchestration/getting-started/quick_start_ios)
- [iOS SDK guide](/guides/orchestration/sdk/ios_sdk_guide)
- [SDK reference](https://transmitsecurity.github.io/identityOrchestration-ios-sdk-docs/documentation/identityorchestration/)