From f7da0d682e69cc6b11481f32f06a6a65e676755c Mon Sep 17 00:00:00 2001 From: Auston Bunsen Date: Thu, 16 Apr 2026 17:04:24 -0400 Subject: [PATCH 1/2] Fix README examples and document pass template pair endpoints MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - provision(): swap unsupported tag_id for card_number/site_code so the Apple DESFire example actually works against the API. - create_template(): use_case "employee_badge" isn't a valid enum value; replace with "corporate_id". - Add Pass Template Pairs section with create_pass_template_pair and list_pass_template_pairs examples — these endpoints exist in the SDK and feature matrix but were undocumented. Co-Authored-By: Claude Opus 4.7 (1M context) --- README.md | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ecc4b49..db5b997 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,8 @@ client = AccessGrid(account_id, secret_key) card = client.access_cards.provision( card_template_id="0xd3adb00b5", employee_id="123456789", - tag_id="DDEADB33FB00B5", + card_number="123456", + site_code="100", full_name="Employee name", email="employee@yourwebsite.com", phone_number="+19547212241", @@ -107,7 +108,7 @@ client.access_cards.delete(card_id="0xc4rd1d") template = client.console.create_template( name="Employee Access Pass", platform="apple", - use_case="employee_badge", + use_case="corporate_id", protocol="desfire", allow_on_multiple_devices=True, watch_count=2, @@ -203,6 +204,36 @@ for item in result['ledger_items']: print(f" Card Template: {item['access_pass']['pass_template']['ex_id']}") ``` +### Pass Template Pairs + +#### Create a pass template pair + +Both templates must be published (status: `ready`) and unpaired. Valid protocol +combinations are both SEOS, or Apple DESFire with Google Smart Tap. + +```python +pair = client.console.create_pass_template_pair( + name="Employee Badge Pair", + apple_card_template_id="0xapplet3mp14t3", + google_card_template_id="0xgoogl3t3mp14t3" +) + +print(f"Created pair: {pair.name} (ID: {pair.id})") +``` + +#### List pass template pairs + +```python +result = client.console.list_pass_template_pairs(page=1, per_page=50) + +for pair in result['card_template_pairs']: + print(f"{pair.name} (ID: {pair.id})") + if pair.ios_template: + print(f" iOS: {pair.ios_template.id}") + if pair.android_template: + print(f" Android: {pair.android_template.id}") +``` + ### Landing Pages #### List landing pages From 2ddf0d7ac7404b50cb4fd0ede2bed9062aed6b70 Mon Sep 17 00:00:00 2001 From: Auston Bunsen Date: Thu, 16 Apr 2026 17:06:19 -0400 Subject: [PATCH 2/2] README: rename "Pass Template Pairs" headings to "Card Template Pairs" Match the API path (/v1/console/card-template-pairs) and surrounding docs which already use "card template" terminology. Code identifiers (create_pass_template_pair, list_pass_template_pairs) are unchanged. Co-Authored-By: Claude Opus 4.7 (1M context) --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index db5b997..9c096b9 100644 --- a/README.md +++ b/README.md @@ -204,9 +204,9 @@ for item in result['ledger_items']: print(f" Card Template: {item['access_pass']['pass_template']['ex_id']}") ``` -### Pass Template Pairs +### Card Template Pairs -#### Create a pass template pair +#### Create a card template pair Both templates must be published (status: `ready`) and unpaired. Valid protocol combinations are both SEOS, or Apple DESFire with Google Smart Tap. @@ -221,7 +221,7 @@ pair = client.console.create_pass_template_pair( print(f"Created pair: {pair.name} (ID: {pair.id})") ``` -#### List pass template pairs +#### List card template pairs ```python result = client.console.list_pass_template_pairs(page=1, per_page=50)