# API Documentation

Everything you need to interact with AccessGrid.

## Supported Programming Languages

- Terminal
- JavaScript
- Ruby
- GO
- Python
- C#
- Java
- php
- Elixir

## iOS Preflight

Enterprise only  
[Contact us](mailto:support@accessgrid.com)

Only available for enterprise customers - provides the required identifiers for iOS mobile provisioning for an access pass associated with a given card template.

### Parameters

#### card_template_id
- **Type:** string  
- **Description:** The card template ID (ex_id) the access pass belongs to

#### access_pass_ex_id
- **Type:** string  
- **Description:** The ex_id of the access pass to retrieve provisioning identifiers for

### Request

```bash
# Build the JSON payload
PAYLOAD='{"access_pass_ex_id":"0xp455-3x1d"}'

# Sign the payload
PAYLOAD_B64=$(printf '%s' "$PAYLOAD" | openssl base64 -A)
SIG=$(printf '%s' "$PAYLOAD_B64" | openssl dgst -sha256 -hmac "$SECRET_KEY" -hex | awk '{print $NF}')

curl -v \
-X POST \
-H "X-ACCT-ID: $ACCOUNT_ID" \
-H "X-PAYLOAD-SIG: $SIG" \
-H "Content-Type: application/json" \
-d "$PAYLOAD" \
"https://api.accessgrid.com/v1/console/card-templates/0xt3mp14t3-3x1d/ios_preflight"
```

```ruby
require 'accessgrid'

acct_id = ENV['ACCOUNT_ID']
secret_key = ENV['SECRET_KEY']

client = AccessGrid.new(acct_id, secret_key)

response = client.console.ios_preflight(
card_template_id: "0xt3mp14t3-3x1d",
access_pass_ex_id: "0xp455-3x1d"
)

puts "Provisioning Credential ID: #{response.provisioningCredentialIdentifier}"
puts "Sharing Instance ID: #{response.sharingInstanceIdentifier}"
puts "Card Template ID: #{response.cardTemplateIdentifier}"
puts "Environment ID: #{response.environmentIdentifier}"
```

```javascript
import AccessGrid from 'accessgrid';
const accountId = process.env.ACCOUNT_ID;
const secretKey = process.env.SECRET_KEY;
const client = new AccessGrid(accountId, secretKey);

const getProvisioningIdentifiers = async () => {
    try {
        const response = await client.console.iosPreflight({
            cardTemplateId: "0xt3mp14t3-3x1d",
            accessPassExId: "0xp455-3x1d"
        });
        console.log(`Provisioning Credential ID: ${response.provisioningCredentialIdentifier}`);
        console.log(`Sharing Instance ID: ${response.sharingInstanceIdentifier}`);
        console.log(`Card Template ID: ${response.cardTemplateIdentifier}`);
        console.log(`Environment ID: ${response.environmentIdentifier}`);
    } catch (error) {
        console.error('Error retrieving provisioning identifiers:', error);
    }
};

getProvisioningIdentifiers();
```

```python
from accessgrid import AccessGrid
import os

account_id = os.getenv('ACCOUNT_ID')
secret_key = os.getenv('SECRET_KEY')

client = AccessGrid(account_id, secret_key)

response = client.console.ios_preflight(
    card_template_id="0xt3mp14t3-3x1d",
    access_pass_ex_id="0xp455-3x1d"
)

print(f"Provisioning Credential ID: {response.provisioningCredentialIdentifier}")
print(f"Sharing Instance ID: {response.sharingInstanceIdentifier}")
print(f"Card Template ID: {response.cardTemplateIdentifier}")
print(f"Environment ID: {response.environmentIdentifier}")
```

```csharp
using AccessGrid;
using System;
using System.Threading.Tasks;

public async Task GenerateProvisioningCredentialsAsync()
{
    var client = new AccessGridClient(
        Environment.GetEnvironmentVariable("ACCOUNT_ID"),
        Environment.GetEnvironmentVariable("SECRET_KEY")
    );

var response = await client.Console.IosPreflightAsync(
        cardTemplateId: "0xt3mp14t3-3x1d",
        accessPassExId: "0xp455-3x1d"
    );

Console.WriteLine($
