# Fetching Current Tokens from TMP API

After collecting `deviceAccountIdentifiers` from PassKit, the application should send them to the TMP API to retrieve the current token status.

Use the endpoint:

```bash
POST /issuer/push-provisioning/tokens/searches
```

For Apple Pay, the request must include `walletType: APPLE_PAY` and `tokenUniqueReferences`, where `tokenUniqueReferences` should contain the previously collected `deviceAccountIdentifiers`. The response contains token data such as `externalCardId`, `tokenStatus`, and `processStatus`.

**Example Request Body**

```json
{
  "walletType": "APPLE_PAY",
  "tokenUniqueReferences": [
    "8YUZErg1CWsPG5uVa",
    "9XVAfh2DXWtQH6wWb"
  ]
}
```

**<span class="notion-enable-hover" data-token-index="0">Swift Example</span>**

```swift
import Foundation

struct GetTokensRequest: Encodable {
    let walletType: String
    let tokenUniqueReferences: [String]
}

struct TokenResponse: Decodable {
    let tokenUniqueReference: String?
    let panUniqueReference: String?
    let externalCardId: String?
    let tokenStatus: String?
    let authorizationPath: String?
    let processStatus: String?
}

let requestBody = GetTokensRequest(
    walletType: "APPLE_PAY",
    tokenUniqueReferences: deviceAccountIdentifiers
)

let url = URL(string: "https://your-tmp-api-base-url/issuer/push-provisioning/tokens/searches")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try JSONEncoder().encode(requestBody)

let (data, response) = try await URLSession.shared.data(for: request)

guard let httpResponse = response as? HTTPURLResponse,
      httpResponse.statusCode == 200 else {
    throw URLError(.badServerResponse)
}

let tokens = try JSONDecoder().decode([TokenResponse].self, from: data)

```