_ registry / mcp streamable-http · checked 17h ago

passfast

https://passfa.st

Registry code: 46f22c64d295686e

api record

PassFast MCP exposes the public PassFast HTTP API as tools named after OpenAPI operationIds (https://passfa.st/openapi.yaml).

Authenticate by pasting a secret key once in the MCP client config: Authorization: Bearer sk_live_… Omit X-App-Id by default; set it only for multi-app orgs. initialize and tools/list validate the key the same way as tools/call (invalid or revoked sk_live_ is rejected). No OAuth, no PassFast agent account, no chat UI — the agent is the MCP client (Cursor / Claude / ChatGPT / Codex / Grok). This server accepts only sk_live_, never pk_live_.

endpoint
https://passfa.st/mcp
protocol
streamable-http ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is passfast live?
Yes — it answered the hub's last check (checked 17h ago). It answered 99% of checks over the last 30 days.
Is passfast free to use?
Partly — some of its tools are open, others need a key or payment.
What tools does passfast have?
47 tools: generatePass, updatePass, updatePassBySerial, voidPassBySerial, voidPass, deleteTemplate, deleteImage, uploadCertificate, ….
Is passfast safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
99.3%

90 days 99.4%· all time 99.4%

latency
156ms

last good check

priced tools
0

of 47 tools

_ answered our checks, 90 days 483 checks · signed record
  • degraded → live
  • live → degraded· timeout after 20000ms
  • degraded → live
  • live → degraded· timeout after 20000ms
  • degraded → live
_ what it is for
used for
  • generate apple and google wallet passes
  • manage pass templates
  • update an issued wallet pass
  • share a pass via link
takes → gives
data → documents, data
tools
9 reads15 changes data1 sends messages
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

_ what it can do 47 tools
1 open17 auth-required 29 never probed 18 of 47 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • getBatchGenerateLimits reads open 42d ago

    Batch generate limits Public metadata for `POST /passes/batch`. No authentication. Returns the hard row cap (100), sync mode, auth summary, and stable error codes. This path is on the site host (`https://passfa.st/api`), not `https://api.passfa.st/functions/v1`. MCP tool: `getBatchGenerateLimits`. Maps to OpenAPI operationId `getBatchGenerateLimits` — GET /passes/batch. Public endpoint — no API key required. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "properties": {},
      "additionalProperties": false
    }
    arguments 5 lines
  • listTemplates reads auth-required 42d ago

    List templates Returns all templates for the current app. By default returns non-archived templates. Set `archived=true` to return only archived templates. **Scope:** `templates:manage` Maps to OpenAPI operationId `listTemplates` — GET /manage-templates. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "archived": {
          "type": "boolean",
          "default": false,
          "description": "When true, return only archived templates instead of active ones."
        },
        "x_app_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override X-App-Id for this call. Omit the connection header by default; set it only for multi-app orgs."
        }
      },
      "additionalProperties": false
    }
    arguments 16 lines
  • getTemplate reads auth-required 35d ago

    Get a template Returns the full details of a single template. **Scope:** `templates:manage` Maps to OpenAPI operationId `getTemplate` — GET /manage-templates/{id}. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid",
          "description": "Template ID."
        },
        "x_app_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override X-App-Id for this call. Omit the connection header by default; set it only for multi-app orgs."
        }
      },
      "additionalProperties": false
    }
    arguments 19 lines
  • listImages auth-required 42d ago

    List images Returns all images for the current app, including signed preview URLs. **Scope:** `images:manage` Maps to OpenAPI operationId `listImages` — GET /manage-images. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "x_app_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override X-App-Id for this call. Omit the connection header by default; set it only for multi-app orgs."
        }
      },
      "additionalProperties": false
    }
    arguments 11 lines
  • getOrganization reads auth-required 42d ago

    Get organization details Returns the current organization's settings. **Scope:** `org:read` Maps to OpenAPI operationId `getOrganization` — GET /manage-org. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "properties": {},
      "additionalProperties": false
    }
    arguments 5 lines
  • listWebhookEvents auth-required 42d ago

    List webhook events Returns a paginated list of webhook event delivery records for the current app. **Scope:** `org:read` Maps to OpenAPI operationId `listWebhookEvents` — GET /manage-org/webhook-events. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "limit": {
          "type": "integer",
          "default": 50,
          "description": "Maximum number of results to return."
        },
        "offset": {
          "type": "integer",
          "default": 0,
          "description": "Number of results to skip."
        },
        "x_app_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override X-App-Id for this call. Omit the connection header by default; set it only for multi-app orgs."
        },
        "event_type": {
          "enum": [
            "pass.created",
            "pass.updated",
            "pass.voided",
            "pass.expired",
            "device.registered",
            "device.unregistered"
          ],
          "type": "string",
          "description": "Filter by event type."
        },
        "delivery_status": {
          "enum": [
            "pending",
            "delivered",
            "failed"
          ],
          "type": "string",
          "description": "Filter by delivery status."
        }
      },
      "additionalProperties": false
    }
    arguments 42 lines
  • listApiKeys auth-required 42d ago

    List API keys Returns all API keys for the current organization. **Scope:** `org:manage` Maps to OpenAPI operationId `listApiKeys` — GET /manage-keys. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "properties": {},
      "additionalProperties": false
    }
    arguments 5 lines
  • getSharePassMetadata reads auth-required 35d ago

    Get shared pass metadata Returns public metadata for a shared pass. No authentication required. Used by the public share page to display wallet buttons and pass info. Maps to OpenAPI operationId `getSharePassMetadata` — GET /share-pass/{token}. Public endpoint — no API key required. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "required": [
        "token"
      ],
      "properties": {
        "token": {
          "type": "string",
          "description": "Share token (32 hex characters)."
        }
      },
      "additionalProperties": false
    }
    arguments 13 lines
  • downloadSharedPass auth-required 35d ago

    Download shared Apple .pkpass Downloads the Apple `.pkpass` file for a shared pass. No authentication required. Only works for active Apple passes. Maps to OpenAPI operationId `downloadSharedPass` — GET /share-pass/{token}/download. Public endpoint — no API key required. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "required": [
        "token"
      ],
      "properties": {
        "token": {
          "type": "string",
          "description": "Share token (32 hex characters)."
        }
      },
      "additionalProperties": false
    }
    arguments 13 lines
  • listCertificates reads auth-required 42d ago

    List certificates Returns all certificates for the current app. **Scope:** `certs:manage` Maps to OpenAPI operationId `listCertificates` — GET /manage-certs. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "x_app_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override X-App-Id for this call. Omit the connection header by default; set it only for multi-app orgs."
        }
      },
      "additionalProperties": false
    }
    arguments 11 lines
  • getPass auth-required 35d ago

    Get a pass Returns the full details of a single pass. **Scope:** `passes:read` Maps to OpenAPI operationId `getPass` — GET /manage-passes/{id}. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid",
          "description": "Pass ID."
        },
        "x_app_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override X-App-Id for this call. Omit the connection header by default; set it only for multi-app orgs."
        }
      },
      "additionalProperties": false
    }
    arguments 19 lines
  • downloadPassBySerial reads auth-required 35d ago

    Download a .pkpass file by serial number Downloads the `.pkpass` binary for an active pass looked up by serial number. When a serial has both Apple and Google passes, use `?wallet_type=` to select which one (defaults to `apple`). **Scope:** `passes:download` Maps to OpenAPI operationId `downloadPassBySerial` — GET /manage-passes/serial/{serial_number}/download. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "required": [
        "serial_number"
      ],
      "properties": {
        "x_app_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override X-App-Id for this call. Omit the connection header by default; set it only for multi-app orgs."
        },
        "wallet_type": {
          "enum": [
            "apple",
            "google"
          ],
          "type": "string",
          "default": "apple",
          "description": "Wallet type to look up when a serial number has both Apple and Google passes.\nDefaults to `apple` for backward compatibility.\n"
        },
        "serial_number": {
          "type": "string",
          "description": "Pass serial number (unique within app + wallet type)."
        }
      },
      "additionalProperties": false
    }
    arguments 27 lines
  • downloadPass auth-required 35d ago

    Download a .pkpass file Downloads the `.pkpass` binary for an active pass. **Scope:** `passes:download` Maps to OpenAPI operationId `downloadPass` — GET /manage-passes/{id}/download. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid",
          "description": "Pass ID."
        },
        "x_app_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override X-App-Id for this call. Omit the connection header by default; set it only for multi-app orgs."
        }
      },
      "additionalProperties": false
    }
    arguments 19 lines
  • getImageUsage auth-required 35d ago

    Get image usage / reference counts Report how an image is referenced across templates and passes. Useful before DELETE to confirm an image is unused, or to find which templates a shared asset is attached to. - `template_refs` lists every template column (e.g. `strip_image_id`, `icon_image_id`, `google_logo_image_id`) that references this image. - `pass_refs_count` is the number of passes whose per-pass `strip_image_id` points at this image. - `safe_to_delete` is `true` when `total_refs` is 0. **Scope:** `images:manage` Maps to OpenAPI operationId `getImageUsage` — GET /manage-images/{id}/usage. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid",
          "description": "Image ID."
        },
        "x_app_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override X-App-Id for this call. Omit the connection header by default; set it only for multi-app orgs."
        }
      },
      "additionalProperties": false
    }
    arguments 19 lines
  • listGoogleCredentials auth-required 42d ago

    List Google credentials Returns all active Google Wallet credentials for the current app. **Scope:** `certs:manage` Maps to OpenAPI operationId `listGoogleCredentials` — GET /manage-certs/google. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "x_app_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override X-App-Id for this call. Omit the connection header by default; set it only for multi-app orgs."
        }
      },
      "additionalProperties": false
    }
    arguments 11 lines
  • getApp auth-required 42d ago

    Get current app details Returns the current app's settings. **Scope:** `org:read` Maps to OpenAPI operationId `getApp` — GET /manage-org/app. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "x_app_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override X-App-Id for this call. Omit the connection header by default; set it only for multi-app orgs."
        }
      },
      "additionalProperties": false
    }
    arguments 11 lines
  • listPasses reads auth-required 42d ago

    List passes Returns a paginated list of passes for the current app. **Scope:** `passes:read` Maps to OpenAPI operationId `listPasses` — GET /manage-passes. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "limit": {
          "type": "integer",
          "default": 50,
          "description": "Maximum number of results to return."
        },
        "offset": {
          "type": "integer",
          "default": 0,
          "description": "Number of results to skip."
        },
        "status": {
          "enum": [
            "active",
            "invalidated",
            "expired"
          ],
          "type": "string",
          "description": "Filter by pass status."
        },
        "x_app_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override X-App-Id for this call. Omit the connection header by default; set it only for multi-app orgs."
        },
        "external_id": {
          "type": "string",
          "description": "Filter by external ID."
        },
        "template_id": {
          "type": "string",
          "format": "uuid",
          "description": "Filter by template ID."
        },
        "wallet_type": {
          "enum": [
            "apple",
            "google"
          ],
          "type": "string",
          "description": "Filter by wallet platform type."
        },
        "created_after": {
          "type": "string",
          "format": "date-time",
          "description": "Only return passes created after this timestamp."
        },
        "serial_number": {
          "type": "string",
          "description": "Filter by serial number."
        },
        "created_before": {
          "type": "string",
          "format": "date-time",
          "description": "Only return passes created before this timestamp."
        }
      },
      "additionalProperties": false
    }
    arguments 61 lines
  • getPassBySerial auth-required 35d ago

    Get a pass by serial number Returns the full details of a single pass looked up by serial number. When a serial has both Apple and Google passes, use `?wallet_type=` to select which one (defaults to `apple`). **Scope:** `passes:read` Maps to OpenAPI operationId `getPassBySerial` — GET /manage-passes/serial/{serial_number}. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "required": [
        "serial_number"
      ],
      "properties": {
        "x_app_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override X-App-Id for this call. Omit the connection header by default; set it only for multi-app orgs."
        },
        "wallet_type": {
          "enum": [
            "apple",
            "google"
          ],
          "type": "string",
          "default": "apple",
          "description": "Wallet type to look up when a serial number has both Apple and Google passes.\nDefaults to `apple` for backward compatibility.\n"
        },
        "serial_number": {
          "type": "string",
          "description": "Pass serial number (unique within app + wallet type)."
        }
      },
      "additionalProperties": false
    }
    arguments 27 lines
  • generatePass changes data unknown never probed

    Generate a wallet pass Generates a wallet pass from a published template. For Apple passes (default), returns a signed `.pkpass` binary file directly. For Google passes (`wallet_type: "google"`), returns a JSON object containing a `save_url` that the user can open to add the pass to Google Wallet. When `wallet_type: "both"`, generates both Apple and Google passes in a single call. The response is always JSON with `apple` and `google` keys. Partial success is allowed — if one wallet fails, the other is still returned with a warning. Returns 201 if at least one succeeds. The pass ID is returned in the `X-Pass-Id` response header (for single-wallet). If the app has a validation webhook configured, the webhook is called once before generation (not per wallet type). A webhook rejection returns 403; a webhook error returns 502 (fail-closed). **Scope:** `passes:create` Maps to OpenAPI operationId `generatePass` — POST /generate-pass. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "required": [
        "template_id",
        "serial_number",
        "data"
      ],
      "properties": {
        "data": {
          "type": "object",
          "description": "Dynamic field values merged into the template structure.",
          "additionalProperties": true
        },
        "x_app_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override X-App-Id for this call. Omit the connection header by default; set it only for multi-app orgs."
        },
        "locations": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "latitude",
              "longitude"
            ],
            "properties": {
              "altitude": {
                "type": "number",
                "description": "Altitude in meters (optional)."
              },
              "latitude": {
                "type": "number",
                "description": "Latitude in degrees."
              },
              "longitude": {
                "type": "number",
                "description": "Longitude in degrees."
              },
              "relevantText": {
                "type": "string",
                "description": "Text displayed on lock screen when user is near this location."
              }
            }
          },
          "description": "GPS locations where the pass is relevant (shown on lock screen).\nOverrides template defaults if provided.\n"
        },
        "expires_at": {
          "type": "string",
          "format": "date-time",
          "description": "Optional expiration timestamp for the pass."
        },
        "external_id": {
          "type": "string",
          "description": "Optional external identifier for cross-system lookups."
        },
        "template_id": {
          "type": "string",
          "format": "uuid",
          "description": "ID of the published template to use."
        },
        "wallet_type": {
          "enum": [
            "apple",
            "google",
            "both"
          ],
          "type": "string",
          "default": "apple",
          "description": "Target wallet platform. Defaults to `apple`. When set to `google`,\nthe response is a JSON object with a `save_url` instead of a binary .pkpass file.\nWhen set to `both`, generates both Apple and Google passes in one call and\nreturns a JSON object with `apple`, `google`, and `warnings` keys.\n"
        },
        "max_distance": {
          "type": "number",
          "description": "Maximum distance in meters from a location for lock screen relevance."
        },
        "get_or_create": {
          "type": "boolean",
          "default": false,
          "description": "When true, if a pass with the same serial_number already exists and is active,\nreturn the existing .pkpass (200) instead of a 409 error. The response includes\nan `X-Pass-Existed: true` header. If the existing pass is voided/expired,\nreturns 409. When false (default), duplicate serials always return 409.\n"
        },
        "relevant_date": {
          "type": "string",
          "format": "date-time",
          "description": "ISO 8601 date when the pass is relevant (appears on lock screen)."
        },
        "serial_number": {
          "type": "string",
          "description": "Unique serial number for this pass."
        },
        "strip_image_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override the template's strip/hero image for this pass only. The referenced\nimage must belong to the same app and have purpose `strip` (or a `strip_*`\nvariant). Applied to Apple `strip.png` and Google `heroImage` atomically\n(same value for both wallets in `wallet_type: \"both\"`). Omit or send `null`\nto use the template's strip image.\n"
        }
      },
      "additionalProperties": false
    }
    arguments 97 lines
  • updatePass changes data unknown never probed

    Update a pass Updates the dynamic data of an active pass. Optionally sends a push notification to registered devices so they fetch the updated pass. At least one of `data`, `expires_at`, `locations`, `relevant_date`, or `max_distance` is required. **Scope:** `passes:manage` Maps to OpenAPI operationId `updatePass` — PATCH /manage-passes/{id}. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid",
          "description": "Pass ID."
        },
        "data": {
          "type": "object",
          "description": "New dynamic field values to merge into the pass.",
          "additionalProperties": true
        },
        "x_app_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override X-App-Id for this call. Omit the connection header by default; set it only for multi-app orgs."
        },
        "locations": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "latitude",
              "longitude"
            ],
            "properties": {
              "altitude": {
                "type": "number"
              },
              "latitude": {
                "type": "number"
              },
              "longitude": {
                "type": "number"
              },
              "relevantText": {
                "type": "string"
              }
            }
          },
          "description": "GPS locations where the pass is relevant (overrides template defaults)."
        },
        "expires_at": {
          "type": "string",
          "format": "date-time",
          "description": "Expiration timestamp (set to null to remove expiration)."
        },
        "push_update": {
          "type": "boolean",
          "default": false,
          "description": "If true, send a push notification to registered devices."
        },
        "max_distance": {
          "type": "number",
          "description": "Maximum distance in meters from a location for lock screen relevance."
        },
        "relevant_date": {
          "type": "string",
          "format": "date-time",
          "description": "ISO 8601 date when the pass is relevant (lock screen)."
        },
        "strip_image_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override the template's strip/hero image for this pass. The referenced\nimage must belong to the same app and have purpose `strip` (or a `strip_*`\nvariant). Applied to Apple `strip.png` and Google `heroImage` atomically\n(synced to the sibling pass for dual-wallet). Send `null` to clear the\noverride and revert to the template's strip image. Omit the field to\nleave the current override unchanged.\n"
        }
      },
      "additionalProperties": false
    }
    arguments 73 lines
  • updatePassBySerial unknown never probed

    Update a pass by serial number Updates the dynamic data of an active pass looked up by serial number. Optionally sends a push notification to registered devices. At least one of `data`, `expires_at`, `locations`, `relevant_date`, or `max_distance` is required. When a serial has both Apple and Google passes, use `?wallet_type=` to select which one (defaults to `apple`). **Scope:** `passes:manage` Maps to OpenAPI operationId `updatePassBySerial` — PATCH /manage-passes/serial/{serial_number}. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "required": [
        "serial_number"
      ],
      "properties": {
        "data": {
          "type": "object",
          "description": "New dynamic field values to merge into the pass.",
          "additionalProperties": true
        },
        "x_app_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override X-App-Id for this call. Omit the connection header by default; set it only for multi-app orgs."
        },
        "locations": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "latitude",
              "longitude"
            ],
            "properties": {
              "altitude": {
                "type": "number"
              },
              "latitude": {
                "type": "number"
              },
              "longitude": {
                "type": "number"
              },
              "relevantText": {
                "type": "string"
              }
            }
          },
          "description": "GPS locations where the pass is relevant (overrides template defaults)."
        },
        "expires_at": {
          "type": "string",
          "format": "date-time",
          "description": "Expiration timestamp (set to null to remove expiration)."
        },
        "push_update": {
          "type": "boolean",
          "default": false,
          "description": "If true, send a push notification to registered devices."
        },
        "wallet_type": {
          "enum": [
            "apple",
            "google"
          ],
          "type": "string",
          "default": "apple",
          "description": "Wallet type to look up when a serial number has both Apple and Google passes.\nDefaults to `apple` for backward compatibility.\n"
        },
        "max_distance": {
          "type": "number",
          "description": "Maximum distance in meters from a location for lock screen relevance."
        },
        "relevant_date": {
          "type": "string",
          "format": "date-time",
          "description": "ISO 8601 date when the pass is relevant (lock screen)."
        },
        "serial_number": {
          "type": "string",
          "description": "Pass serial number (unique within app + wallet type)."
        },
        "strip_image_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override the template's strip/hero image for this pass. The referenced\nimage must belong to the same app and have purpose `strip` (or a `strip_*`\nvariant). Applied to Apple `strip.png` and Google `heroImage` atomically\n(synced to the sibling pass for dual-wallet). Send `null` to clear the\noverride and revert to the template's strip image. Omit the field to\nleave the current override unchanged.\n"
        }
      },
      "additionalProperties": false
    }
    arguments 81 lines
  • voidPassBySerial unknown never probed

    Void a pass by serial number Marks a pass (looked up by serial number) as invalidated and rebuilds the `.pkpass` file with Apple's `voided: true` flag. Registered devices are sent push notifications so the pass appears voided immediately in Apple Wallet. When a serial has both Apple and Google passes, use `?wallet_type=` to select which one (defaults to `apple`). **Scope:** `passes:manage` Maps to OpenAPI operationId `voidPassBySerial` — POST /manage-passes/serial/{serial_number}/void. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "required": [
        "serial_number"
      ],
      "properties": {
        "x_app_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override X-App-Id for this call. Omit the connection header by default; set it only for multi-app orgs."
        },
        "wallet_type": {
          "enum": [
            "apple",
            "google"
          ],
          "type": "string",
          "default": "apple",
          "description": "Wallet type to look up when a serial number has both Apple and Google passes.\nDefaults to `apple` for backward compatibility.\n"
        },
        "serial_number": {
          "type": "string",
          "description": "Pass serial number (unique within app + wallet type)."
        }
      },
      "additionalProperties": false
    }
    arguments 27 lines
  • voidPass unknown never probed

    Void a pass Marks a pass as invalidated and rebuilds the `.pkpass` file with Apple's `voided: true` flag. Registered devices are sent push notifications so the pass appears voided immediately in Apple Wallet. Rebuild failure is non-fatal — the pass is still invalidated at the DB level. **Scope:** `passes:manage` Maps to OpenAPI operationId `voidPass` — POST /manage-passes/{id}/void. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid",
          "description": "Pass ID."
        },
        "x_app_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override X-App-Id for this call. Omit the connection header by default; set it only for multi-app orgs."
        }
      },
      "additionalProperties": false
    }
    arguments 19 lines
  • deleteTemplate changes data unknown never probed

    Delete a template Soft-deletes a template by marking it as archived. Use `permanent=true` to permanently delete the template and its associated data. **Scope:** `templates:manage` Maps to OpenAPI operationId `deleteTemplate` — DELETE /manage-templates/{id}. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid",
          "description": "Template ID."
        },
        "x_app_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override X-App-Id for this call. Omit the connection header by default; set it only for multi-app orgs."
        },
        "permanent": {
          "type": "boolean",
          "default": false,
          "description": "When true, permanently deletes the template instead of archiving it."
        }
      },
      "additionalProperties": false
    }
    arguments 24 lines
  • deleteImage changes data unknown never probed

    Delete an image Deletes an image (storage file + DB row). Always succeeds when the image exists. Any template column pointing at this image is silently cleared (the template falls back to no image in that slot — re-attach a new one if needed). Any pass with `strip_image_id` pointing at this image has its override nullified and reverts to the template's strip on next render. Use `GET /manage-images/{id}/usage` first if you need to know the blast radius before deleting. **Scope:** `images:manage` Maps to OpenAPI operationId `deleteImage` — DELETE /manage-images/{id}. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid",
          "description": "Image ID."
        },
        "x_app_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override X-App-Id for this call. Omit the connection header by default; set it only for multi-app orgs."
        }
      },
      "additionalProperties": false
    }
    arguments 19 lines
  • uploadCertificate changes data unknown never probed

    Upload a single certificate Uploads a single PEM-encoded certificate or key. **Scope:** `certs:manage` Maps to OpenAPI operationId `uploadCertificate` — POST /manage-certs. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "required": [
        "cert_type",
        "cert_data"
      ],
      "properties": {
        "x_app_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override X-App-Id for this call. Omit the connection header by default; set it only for multi-app orgs."
        },
        "cert_data": {
          "type": "string",
          "format": "byte",
          "description": "Base64-encoded certificate or key data."
        },
        "cert_type": {
          "enum": [
            "signer_cert",
            "signer_key",
            "wwdr"
          ],
          "type": "string",
          "description": "Type of certificate being uploaded."
        }
      },
      "additionalProperties": false
    }
    arguments 29 lines
  • uploadGoogleCredentials changes data unknown never probed

    Upload Google credentials Uploads Google service account credentials for Google Wallet pass signing. The service account JSON and issuer ID are stored securely. **Scope:** `certs:manage` Maps to OpenAPI operationId `uploadGoogleCredentials` — POST /manage-certs/google. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "required": [
        "service_account_json",
        "issuer_id"
      ],
      "properties": {
        "x_app_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override X-App-Id for this call. Omit the connection header by default; set it only for multi-app orgs."
        },
        "issuer_id": {
          "type": "string",
          "description": "Google Wallet issuer ID."
        },
        "service_account_json": {
          "type": "object",
          "description": "Google service account JSON key file contents.",
          "additionalProperties": true
        }
      },
      "additionalProperties": false
    }
    arguments 24 lines
  • testGoogleConnection unknown never probed

    Test Google connection Tests the configured Google Wallet credentials by attempting to authenticate with the Google Wallet API. **Scope:** `certs:manage` Maps to OpenAPI operationId `testGoogleConnection` — POST /manage-certs/google/test. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "x_app_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override X-App-Id for this call. Omit the connection header by default; set it only for multi-app orgs."
        }
      },
      "additionalProperties": false
    }
    arguments 11 lines
  • createApp unknown never probed

    Create a new app Creates a new app within the organization. **Scope:** `org:manage` Maps to OpenAPI operationId `createApp` — POST /manage-org/app. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "default": "New App",
          "description": "App display name."
        }
      },
      "additionalProperties": false
    }
    arguments 11 lines
  • deleteApp changes data unknown never probed

    Deactivate an app Deactivates the current app. This does not permanently delete data. **Scope:** `org:manage` Maps to OpenAPI operationId `deleteApp` — DELETE /manage-org/app. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "x_app_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override X-App-Id for this call. Omit the connection header by default; set it only for multi-app orgs."
        }
      },
      "additionalProperties": false
    }
    arguments 11 lines
  • testWebhook sends messages unknown never probed

    Test the validation webhook Sends a sample validation webhook payload to the configured URL and returns the result. **Scope:** `org:manage` Maps to OpenAPI operationId `testWebhook` — POST /manage-org/app/test-webhook. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "x_app_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override X-App-Id for this call. Omit the connection header by default; set it only for multi-app orgs."
        }
      },
      "additionalProperties": false
    }
    arguments 11 lines
  • createApiKey changes data unknown never probed

    Create an API key Creates a new API key. The response contains `id`, `name`, `key_type`, `key_prefix`, `raw_key`, and `message`. The full raw key is shown only once and cannot be retrieved again. **Scope:** `org:manage` Maps to OpenAPI operationId `createApiKey` — POST /manage-keys. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "required": [
        "name",
        "key_type"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "Human-readable label for the key."
        },
        "key_type": {
          "enum": [
            "secret",
            "publishable"
          ],
          "type": "string",
          "description": "Key type. Secret keys have full access; publishable keys have limited scopes."
        }
      },
      "additionalProperties": false
    }
    arguments 22 lines
  • batchGeneratePasses changes data unknown never probed

    Batch generate wallet passes Generate up to 100 wallet passes in one **synchronous** request. Each accepted row is one `POST /generate-pass` (same free-100 and card-on-file gates as a single generate). Optional `POST /share-pass/create` per successful row when `create_share_links` is true (default). **Host:** `https://passfa.st/api/passes/batch` (site / Vercel preview). This is not an `api.passfa.st` Edge Function. MCP tool: `batchGeneratePasses` (secret key `sk_live_` only) — same path and body as this operation. **Auth:** `Authorization: Bearer sk_live_…` or `pk_live_…` (scope `passes:create`). A Supabase user JWT is also accepted (dashboard session). Send `X-App-Id` for multi-app orgs and `X-Org-Id` as elsewhere. **Body:** mapped `rows` (same shape the dashboard posts) **or** raw `csv` plus optional `column_map`. Do not send both. **Limits:** more than 100 rows → `400 row_limit_exceeded` **before** any generate. Empty body / empty CSV → `400 empty_batch` or `invalid_csv`. Bad template → `400 invalid_template`. Missing or invalid Bearer → `401 unauthorized`. **Billing:** a row that hits the free-100 / card gate returns the same `402` codes as generate-pass (`free_limit_reached`, `subscription_canceled`, `payment_past_due`). Remaining rows stop. Already-created rows stay. HTTP `402` is returned only when **zero** rows succeeded; a later-row 402 after some successes is HTTP `200` with `stopped_reason` and per-row results. **Partial failures:** other per-row errors (validation, duplicate serial, share-link warning) continue. The response lists every processed row. **Scope:** `passes:create` Maps to OpenAPI operationId `batchGeneratePasses` — POST /passes/batch. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "required": [
        "template_id"
      ],
      "properties": {
        "csv": {
          "type": "string",
          "description": "Raw CSV text with a header row. Do not send together with rows."
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "data": {
                "type": "object",
                "description": "Template field_schema values.",
                "additionalProperties": true
              },
              "expires_at": {
                "type": "string",
                "format": "date-time"
              },
              "external_id": {
                "type": "string"
              },
              "serial_number": {
                "type": "string",
                "description": "Optional. Auto-generated when omitted."
              }
            }
          },
          "description": "Mapped rows (dashboard / scripts). Do not send together with csv."
        },
        "x_app_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override X-App-Id for this call. Omit the connection header by default; set it only for multi-app orgs."
        },
        "column_map": {
          "type": "object",
          "properties": {
            "fields": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            },
            "expires_at": {
              "type": "string"
            },
            "external_id": {
              "type": "string"
            },
            "serial_number": {
              "type": "string"
            }
          },
          "description": "Optional CSV header map when `csv` is sent."
        },
        "template_id": {
          "type": "string",
          "format": "uuid",
          "description": "ID of a published template."
        },
        "wallet_type": {
          "enum": [
            "apple",
            "google",
            "both"
          ],
          "type": "string",
          "default": "apple"
        },
        "create_share_links": {
          "type": "boolean",
          "default": true,
          "description": "When true, call POST /share-pass/create after each successful generate."
        }
      },
      "additionalProperties": false
    }
    arguments 83 lines
  • updateTemplate unknown never probed

    Update a template Updates a draft template. Published templates cannot be modified. **Scope:** `templates:manage` Maps to OpenAPI operationId `updateTemplate` — PATCH /manage-templates/{id}. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid",
          "description": "Template ID."
        },
        "name": {
          "type": "string"
        },
        "x_app_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override X-App-Id for this call. Omit the connection header by default; set it only for multi-app orgs."
        },
        "structure": {
          "type": "object",
          "required": [
            "backgroundColor",
            "foregroundColor"
          ],
          "properties": {
            "nfc": {
              "type": "object",
              "required": [
                "message"
              ],
              "properties": {
                "message": {
                  "type": "string",
                  "description": "The data transmitted during an NFC interaction."
                },
                "encryptionPublicKey": {
                  "type": "string",
                  "description": "ECC P-256 public key (base64-encoded) for encrypting the NFC payload."
                },
                "requiresAuthentication": {
                  "type": "boolean"
                }
              }
            },
            "origin": {
              "type": "object",
              "required": [
                "airportIataCode"
              ],
              "properties": {
                "gate": {
                  "type": "string"
                },
                "terminal": {
                  "type": "string"
                },
                "airportIataCode": {
                  "type": "string",
                  "description": "3-letter IATA airport code (e.g. `LHR`, `JFK`)."
                }
              }
            },
            "barcode": {
              "type": "object",
              "properties": {
                "format": {
                  "enum": [
                    "PKBarcodeFormatQR",
                    "PKBarcodeFormatPDF417",
                    "PKBarcodeFormatAztec",
                    "PKBarcodeFormatCode128"
                  ],
                  "type": "string",
                  "description": "Apple Wallet barcode format. Automatically mapped to Google's equivalent (QR_CODE, PDF_417, AZTEC, CODE_128) when the template targets Google Wallet."
                },
                "altText": {
                  "type": "string",
                  "description": "Static alternate text. Only used when `altTextDataKey` is not set."
                },
                "altTextDataKey": {
                  "type": "string",
                  "description": "Key in generate-pass `data` object whose value becomes the human-readable alt text."
                },
                "messageDataKey": {
                  "type": "string",
                  "description": "Key in generate-pass `data` object that holds the barcode message."
                },
                "messageEncoding": {
                  "type": "string",
                  "default": "iso-8859-1",
                  "description": "Text encoding for the barcode message. Default is `iso-8859-1` per Apple spec."
                }
              }
            },
            "beacons": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "proximityUUID"
                ],
                "properties": {
                  "major": {
                    "type": "integer"
                  },
                  "minor": {
                    "type": "integer"
                  },
                  "relevantText": {
                    "type": "string"
                  },
                  "proximityUUID": {
                    "type": "string",
                    "format": "uuid"
                  }
                }
              }
            },
            "sellURL": {
              "type": "string",
              "format": "uri"
            },
            "addOnURL": {
              "type": "string",
              "format": "uri"
            },
            "logoText": {
              "type": "string",
              "description": "Apple: text beside the logo on the pass face."
            },
            "messages": {
              "type": "array",
              "items": {
                "type": "object",
                "additionalProperties": true
              },
              "description": "Google class-level messages."
            },
            "pinLabel": {
              "type": "string"
            },
            "tripType": {
              "enum": [
                "ROUND_TRIP",
                "ONE_WAY"
              ],
              "type": "string"
            },
            "doorsOpen": {
              "type": "string",
              "format": "date-time"
            },
            "jumpToURL": {
              "type": "string",
              "format": "uri"
            },
            "locations": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "latitude",
                  "longitude"
                ],
                "properties": {
                  "altitude": {
                    "type": "number"
                  },
                  "latitude": {
                    "type": "number"
                  },
                  "longitude": {
                    "type": "number"
                  },
                  "relevantText": {
                    "type": "string",
                    "description": "Apple: lock-screen text when the device enters this location."
                  }
                }
              }
            },
            "semantics": {
              "type": "object",
              "description": "Apple: top-level semantic tags (event, transit, balance categories).",
              "additionalProperties": true
            },
            "venueName": {
              "type": "string"
            },
            "backFields": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "key"
                ],
                "properties": {
                  "key": {
                    "type": "string",
                    "description": "Unique key identifying the field. Must be unique across ALL field groups in a template."
                  },
                  "row": {
                    "enum": [
                      0,
                      1
                    ],
                    "type": "integer",
                    "description": "Apple: auxiliary/secondary layout control (0 or 1)."
                  },
                  "label": {
                    "type": "string",
                    "description": "Human-readable label rendered above the value on the pass face."
                  },
                  "value": {
                    "oneOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      }
                    ],
                    "description": "Static value for the field. Number types are preserved for\nApple's `numberStyle` / `currencyCode` formatters. For dynamic\nvalues, omit `value` and set `dataKey` instead.\n"
                  },
                  "dataKey": {
                    "type": "string",
                    "description": "PassFast-specific: name of a key in the generate-pass request\nbody's `data` object whose value should populate this field.\n"
                  },
                  "dateStyle": {
                    "enum": [
                      "PKDateStyleNone",
                      "PKDateStyleShort",
                      "PKDateStyleMedium",
                      "PKDateStyleLong",
                      "PKDateStyleFull"
                    ],
                    "type": "string"
                  },
                  "semantics": {
                    "type": "object",
                    "description": "Apple: per-field semantic tags for Siri / Maps / Do-Not-Disturb integration.",
                    "additionalProperties": true
                  },
                  "timeStyle": {
                    "enum": [
                      "PKDateStyleNone",
                      "PKDateStyleShort",
                      "PKDateStyleMedium",
                      "PKDateStyleLong",
                      "PKDateStyleFull"
                    ],
                    "type": "string"
                  },
                  "isRelative": {
                    "type": "boolean",
                    "description": "Apple: whether the date is displayed relative to the current time."
                  },
                  "numberStyle": {
                    "enum": [
                      "PKNumberStyleDecimal",
                      "PKNumberStylePercent",
                      "PKNumberStyleScientific",
                      "PKNumberStyleSpellOut"
                    ],
                    "type": "string"
                  },
                  "currencyCode": {
                    "type": "string",
                    "description": "Apple: ISO 4217 currency code. Value is formatted as currency."
                  },
                  "changeMessage": {
                    "type": "string",
                    "description": "Apple: notification text when this field's value changes. Must contain `%@` placeholder for the new value."
                  },
                  "textAlignment": {
                    "enum": [
                      "PKTextAlignmentLeft",
                      "PKTextAlignmentCenter",
                      "PKTextAlignmentRight",
                      "PKTextAlignmentNatural"
                    ],
                    "type": "string"
                  },
                  "attributedValue": {
                    "type": "string",
                    "description": "Apple: HTML-flavored value (used for rendering links, etc.)."
                  },
                  "ignoresTimeZone": {
                    "type": "boolean",
                    "description": "Apple: whether to display the date in the pass's local time rather than the user's."
                  },
                  "dataDetectorTypes": {
                    "type": "array",
                    "items": {
                      "enum": [
                        "PKDataDetectorTypePhoneNumber",
                        "PKDataDetectorTypeLink",
                        "PKDataDetectorTypeAddress",
                        "PKDataDetectorTypeCalendarEvent"
                      ],
                      "type": "string"
                    },
                    "description": "Apple: back fields only. Limits which kinds of data are detected and linked."
                  }
                },
                "description": "A single field inside a pass. Used in `headerFields`, `primaryFields`,\n`secondaryFields`, `auxiliaryFields`, `backFields`, and\n`additionalInfoFields` (poster-style eventTicket only).\n"
              }
            },
            "bagDropURL": {
              "type": "string",
              "format": "uri"
            },
            "checkInURL": {
              "type": "string",
              "format": "uri"
            },
            "labelColor": {
              "type": "string",
              "description": "Apple only — field label color."
            },
            "pinDataKey": {
              "type": "string"
            },
            "rowDataKey": {
              "type": "string"
            },
            "dateTimeEnd": {
              "type": "string",
              "format": "date-time"
            },
            "description": {
              "type": "string",
              "description": "Apple top-level description. Defaults to 'PassFast Pass' if unset."
            },
            "destination": {
              "type": "object",
              "required": [
                "airportIataCode"
              ],
              "properties": {
                "gate": {
                  "type": "string"
                },
                "terminal": {
                  "type": "string"
                },
                "airportIataCode": {
                  "type": "string",
                  "description": "3-letter IATA airport code (e.g. `LHR`, `JFK`)."
                }
              }
            },
            "gateDataKey": {
              "type": "string"
            },
            "maxDistance": {
              "type": "integer",
              "description": "Apple only — max distance (meters) for location relevance."
            },
            "seatDataKey": {
              "type": "string"
            },
            "shoppingURL": {
              "type": "string",
              "format": "uri"
            },
            "transferURL": {
              "type": "string",
              "format": "uri"
            },
            "transitType": {
              "enum": [
                "PKTransitTypeAir",
                "PKTransitTypeTrain",
                "PKTransitTypeBus",
                "PKTransitTypeBoat",
                "PKTransitTypeGeneric"
              ],
              "type": "string",
              "description": "Apple Wallet transitType enum. Required for `boardingPass` templates at publish."
            },
            "appLaunchURL": {
              "type": "string",
              "format": "uri"
            },
            "flightHeader": {
              "type": "object",
              "required": [
                "carrier",
                "flightNumber"
              ],
              "properties": {
                "carrier": {
                  "type": "object",
                  "required": [
                    "carrierIataCode"
                  ],
                  "properties": {
                    "carrierIataCode": {
                      "type": "string",
                      "description": "2-letter IATA carrier code (e.g. `BA`, `AA`)."
                    }
                  }
                },
                "flightNumber": {
                  "type": "string",
                  "description": "Flight number (digits only per Google spec)."
                }
              }
            },
            "headerFields": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "key"
                ],
                "properties": {
                  "key": {
                    "type": "string",
                    "description": "Unique key identifying the field. Must be unique across ALL field groups in a template."
                  },
                  "row": {
                    "enum": [
                      0,
                      1
                    ],
                    "type": "integer",
                    "description": "Apple: auxiliary/secondary layout control (0 or 1)."
                  },
                  "label": {
                    "type": "string",
                    "description": "Human-readable label rendered above the value on the pass face."
                  },
                  "value": {
                    "oneOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      }
                    ],
                    "description": "Static value for the field. Number types are preserved for\nApple's `numberStyle` / `currencyCode` formatters. For dynamic\nvalues, omit `value` and set `dataKey` instead.\n"
                  },
                  "dataKey": {
                    "type": "string",
                    "description": "PassFast-specific: name of a key in the generate-pass request\nbody's `data` object whose value should populate this field.\n"
                  },
                  "dateStyle": {
                    "enum": [
                      "PKDateStyleNone",
                      "PKDateStyleShort",
                      "PKDateStyleMedium",
                      "PKDateStyleLong",
                      "PKDateStyleFull"
                    ],
                    "type": "string"
                  },
                  "semantics": {
                    "type": "object",
                    "description": "Apple: per-field semantic tags for Siri / Maps / Do-Not-Disturb integration.",
                    "additionalProperties": true
                  },
                  "timeStyle": {
                    "enum": [
                      "PKDateStyleNone",
                      "PKDateStyleShort",
                      "PKDateStyleMedium",
                      "PKDateStyleLong",
                      "PKDateStyleFull"
                    ],
                    "type": "string"
                  },
                  "isRelative": {
                    "type": "boolean",
                    "description": "Apple: whether the date is displayed relative to the current time."
                  },
                  "numberStyle": {
                    "enum": [
                      "PKNumberStyleDecimal",
                      "PKNumberStylePercent",
                      "PKNumberStyleScientific",
                      "PKNumberStyleSpellOut"
                    ],
                    "type": "string"
                  },
                  "currencyCode": {
                    "type": "string",
                    "description": "Apple: ISO 4217 currency code. Value is formatted as currency."
                  },
                  "changeMessage": {
                    "type": "string",
                    "description": "Apple: notification text when this field's value changes. Must contain `%@` placeholder for the new value."
                  },
                  "textAlignment": {
                    "enum": [
                      "PKTextAlignmentLeft",
                      "PKTextAlignmentCenter",
                      "PKTextAlignmentRight",
                      "PKTextAlignmentNatural"
                    ],
                    "type": "string"
                  },
                  "attributedValue": {
                    "type": "string",
                    "description": "Apple: HTML-flavored value (used for rendering links, etc.)."
                  },
                  "ignoresTimeZone": {
                    "type": "boolean",
                    "description": "Apple: whether to display the date in the pass's local time rather than the user's."
                  },
                  "dataDetectorTypes": {
                    "type": "array",
                    "items": {
                      "enum": [
                        "PKDataDetectorTypePhoneNumber",
                        "PKDataDetectorTypeLink",
                        "PKDataDetectorTypeAddress",
                        "PKDataDetectorTypeCalendarEvent"
                      ],
                      "type": "string"
                    },
                    "description": "Apple: back fields only. Limits which kinds of data are detected and linked."
                  }
                },
                "description": "A single field inside a pass. Used in `headerFields`, `primaryFields`,\n`secondaryFields`, `auxiliaryFields`, `backFields`, and\n`additionalInfoFields` (poster-style eventTicket only).\n"
              }
            },
            "orderFoodURL": {
              "type": "string",
              "format": "uri"
            },
            "relevantDate": {
              "type": "string",
              "format": "date-time",
              "description": "ISO 8601 datetime with timezone suffix. Naive datetimes (no Z/offset) are rejected."
            },
            "trackBagsURL": {
              "type": "string",
              "format": "uri"
            },
            "venueAddress": {
              "type": "string"
            },
            "changeSeatURL": {
              "type": "string",
              "format": "uri"
            },
            "dateTimeStart": {
              "type": "string",
              "format": "date-time"
            },
            "eventLogoText": {
              "type": "string"
            },
            "primaryFields": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "key"
                ],
                "properties": {
                  "key": {
                    "type": "string",
                    "description": "Unique key identifying the field. Must be unique across ALL field groups in a template."
                  },
                  "row": {
                    "enum": [
                      0,
                      1
                    ],
                    "type": "integer",
                    "description": "Apple: auxiliary/secondary layout control (0 or 1)."
                  },
                  "label": {
                    "type": "string",
                    "description": "Human-readable label rendered above the value on the pass face."
                  },
                  "value": {
                    "oneOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      }
                    ],
                    "description": "Static value for the field. Number types are preserved for\nApple's `numberStyle` / `currencyCode` formatters. For dynamic\nvalues, omit `value` and set `dataKey` instead.\n"
                  },
                  "dataKey": {
                    "type": "string",
                    "description": "PassFast-specific: name of a key in the generate-pass request\nbody's `data` object whose value should populate this field.\n"
                  },
                  "dateStyle": {
                    "enum": [
                      "PKDateStyleNone",
                      "PKDateStyleShort",
                      "PKDateStyleMedium",
                      "PKDateStyleLong",
                      "PKDateStyleFull"
                    ],
                    "type": "string"
                  },
                  "semantics": {
                    "type": "object",
                    "description": "Apple: per-field semantic tags for Siri / Maps / Do-Not-Disturb integration.",
                    "additionalProperties": true
                  },
                  "timeStyle": {
                    "enum": [
                      "PKDateStyleNone",
                      "PKDateStyleShort",
                      "PKDateStyleMedium",
                      "PKDateStyleLong",
                      "PKDateStyleFull"
                    ],
                    "type": "string"
                  },
                  "isRelative": {
                    "type": "boolean",
                    "description": "Apple: whether the date is displayed relative to the current time."
                  },
                  "numberStyle": {
                    "enum": [
                      "PKNumberStyleDecimal",
                      "PKNumberStylePercent",
                      "PKNumberStyleScientific",
                      "PKNumberStyleSpellOut"
                    ],
                    "type": "string"
                  },
                  "currencyCode": {
                    "type": "string",
                    "description": "Apple: ISO 4217 currency code. Value is formatted as currency."
                  },
                  "changeMessage": {
                    "type": "string",
                    "description": "Apple: notification text when this field's value changes. Must contain `%@` placeholder for the new value."
                  },
                  "textAlignment": {
                    "enum": [
                      "PKTextAlignmentLeft",
                      "PKTextAlignmentCenter",
                      "PKTextAlignmentRight",
                      "PKTextAlignmentNatural"
                    ],
                    "type": "string"
                  },
                  "attributedValue": {
                    "type": "string",
                    "description": "Apple: HTML-flavored value (used for rendering links, etc.)."
                  },
                  "ignoresTimeZone": {
                    "type": "boolean",
                    "description": "Apple: whether to display the date in the pass's local time rather than the user's."
                  },
                  "dataDetectorTypes": {
                    "type": "array",
                    "items": {
                      "enum": [
                        "PKDataDetectorTypePhoneNumber",
                        "PKDataDetectorTypeLink",
                        "PKDataDetectorTypeAddress",
                        "PKDataDetectorTypeCalendarEvent"
                      ],
                      "type": "string"
                    },
                    "description": "Apple: back fields only. Limits which kinds of data are detected and linked."
                  }
                },
                "description": "A single field inside a pass. Used in `headerFields`, `primaryFields`,\n`secondaryFields`, `auxiliaryFields`, `backFields`, and\n`additionalInfoFields` (poster-style eventTicket only).\n"
              }
            },
            "relevantDates": {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "string",
                    "format": "date-time"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "endDate": {
                        "type": "string",
                        "format": "date-time"
                      },
                      "startDate": {
                        "type": "string",
                        "format": "date-time"
                      }
                    }
                  }
                ]
              },
              "description": "Apple plural relevantDates[] — multiple time windows. Entries without timezone are filtered out."
            },
            "balanceDataKey": {
              "type": "string"
            },
            "enableSmartTap": {
              "type": "boolean"
            },
            "googleLogoText": {
              "type": "string",
              "description": "Google: brand/card title (required for Google Wallet rendering)."
            },
            "merchandiseURL": {
              "type": "string",
              "format": "uri"
            },
            "objectMessages": {
              "type": "array",
              "items": {
                "type": "object",
                "additionalProperties": true
              }
            },
            "seatUpgradeURL": {
              "type": "string",
              "format": "uri"
            },
            "sectionDataKey": {
              "type": "string"
            },
            "auxiliaryFields": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "key"
                ],
                "properties": {
                  "key": {
                    "type": "string",
                    "description": "Unique key identifying the field. Must be unique across ALL field groups in a template."
                  },
                  "row": {
                    "enum": [
                      0,
                      1
                    ],
                    "type": "integer",
                    "description": "Apple: auxiliary/secondary layout control (0 or 1)."
                  },
                  "label": {
                    "type": "string",
                    "description": "Human-readable label rendered above the value on the pass face."
                  },
                  "value": {
                    "oneOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      }
                    ],
                    "description": "Static value for the field. Number types are preserved for\nApple's `numberStyle` / `currencyCode` formatters. For dynamic\nvalues, omit `value` and set `dataKey` instead.\n"
                  },
                  "dataKey": {
                    "type": "string",
                    "description": "PassFast-specific: name of a key in the generate-pass request\nbody's `data` object whose value should populate this field.\n"
                  },
                  "dateStyle": {
                    "enum": [
                      "PKDateStyleNone",
                      "PKDateStyleShort",
                      "PKDateStyleMedium",
                      "PKDateStyleLong",
                      "PKDateStyleFull"
                    ],
                    "type": "string"
                  },
                  "semantics": {
                    "type": "object",
                    "description": "Apple: per-field semantic tags for Siri / Maps / Do-Not-Disturb integration.",
                    "additionalProperties": true
                  },
                  "timeStyle": {
                    "enum": [
                      "PKDateStyleNone",
                      "PKDateStyleShort",
                      "PKDateStyleMedium",
                      "PKDateStyleLong",
                      "PKDateStyleFull"
                    ],
                    "type": "string"
                  },
                  "isRelative": {
                    "type": "boolean",
                    "description": "Apple: whether the date is displayed relative to the current time."
                  },
                  "numberStyle": {
                    "enum": [
                      "PKNumberStyleDecimal",
                      "PKNumberStylePercent",
                      "PKNumberStyleScientific",
                      "PKNumberStyleSpellOut"
                    ],
                    "type": "string"
                  },
                  "currencyCode": {
                    "type": "string",
                    "description": "Apple: ISO 4217 currency code. Value is formatted as currency."
                  },
                  "changeMessage": {
                    "type": "string",
                    "description": "Apple: notification text when this field's value changes. Must contain `%@` placeholder for the new value."
                  },
                  "textAlignment": {
                    "enum": [
                      "PKTextAlignmentLeft",
                      "PKTextAlignmentCenter",
                      "PKTextAlignmentRight",
                      "PKTextAlignmentNatural"
                    ],
                    "type": "string"
                  },
                  "attributedValue": {
                    "type": "string",
                    "description": "Apple: HTML-flavored value (used for rendering links, etc.)."
                  },
                  "ignoresTimeZone": {
                    "type": "boolean",
                    "description": "Apple: whether to display the date in the pass's local time rather than the user's."
                  },
                  "dataDetectorTypes": {
                    "type": "array",
                    "items": {
                      "enum": [
                        "PKDataDetectorTypePhoneNumber",
                        "PKDataDetectorTypeLink",
                        "PKDataDetectorTypeAddress",
                        "PKDataDetectorTypeCalendarEvent"
                      ],
                      "type": "string"
                    },
                    "description": "Apple: back fields only. Limits which kinds of data are detected and linked."
                  }
                },
                "description": "A single field inside a pass. Used in `headerFields`, `primaryFields`,\n`secondaryFields`, `auxiliaryFields`, `backFields`, and\n`additionalInfoFields` (poster-style eventTicket only).\n"
              }
            },
            "backgroundColor": {
              "type": "string",
              "description": "Accepts `#rrggbb`, `#rgb`, or `rgb(r,g,b)`. Apple emits `rgb(...)`; Google emits `#rrggbb`."
            },
            "callbackOptions": {
              "type": "object",
              "additionalProperties": true
            },
            "cardNumberLabel": {
              "type": "string"
            },
            "flightStatusURL": {
              "type": "string",
              "format": "uri"
            },
            "foregroundColor": {
              "type": "string"
            },
            "rotatingBarcode": {
              "type": "object",
              "properties": {
                "type": {
                  "enum": [
                    "QR_CODE",
                    "AZTEC",
                    "PDF_417",
                    "CODE_128",
                    "DATA_MATRIX"
                  ],
                  "type": "string"
                },
                "totpDetails": {
                  "type": "object",
                  "properties": {
                    "algorithm": {
                      "enum": [
                        "TOTP_SHA1",
                        "TOTP_SHA256",
                        "TOTP_SHA512"
                      ],
                      "type": "string"
                    },
                    "parameters": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "key": {
                            "type": "string",
                            "description": "Base16 (hex) encoded TOTP secret."
                          },
                          "valueLength": {
                            "type": "integer"
                          }
                        }
                      }
                    },
                    "periodMillis": {
                      "type": "string",
                      "description": "TOTP period as a string of milliseconds (e.g. `\"30000\"`)."
                    }
                  }
                },
                "valuePattern": {
                  "type": "string",
                  "description": "Pattern for the rotating value, e.g. `rotating-{totp_value}`."
                }
              },
              "description": "Google Wallet rotating barcode (TOTP-based). Supply a pre-configured\nobject; PassFast does not synthesize the HMAC secret.\n"
            },
            "secondaryFields": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "key"
                ],
                "properties": {
                  "key": {
                    "type": "string",
                    "description": "Unique key identifying the field. Must be unique across ALL field groups in a template."
                  },
                  "row": {
                    "enum": [
                      0,
                      1
                    ],
                    "type": "integer",
                    "description": "Apple: auxiliary/secondary layout control (0 or 1)."
                  },
                  "label": {
                    "type": "string",
                    "description": "Human-readable label rendered above the value on the pass face."
                  },
                  "value": {
                    "oneOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      }
                    ],
                    "description": "Static value for the field. Number types are preserved for\nApple's `numberStyle` / `currencyCode` formatters. For dynamic\nvalues, omit `value` and set `dataKey` instead.\n"
                  },
                  "dataKey": {
                    "type": "string",
                    "description": "PassFast-specific: name of a key in the generate-pass request\nbody's `data` object whose value should populate this field.\n"
                  },
                  "dateStyle": {
                    "enum": [
                      "PKDateStyleNone",
                      "PKDateStyleShort",
                      "PKDateStyleMedium",
                      "PKDateStyleLong",
                      "PKDateStyleFull"
                    ],
                    "type": "string"
                  },
                  "semantics": {
                    "type": "object",
                    "description": "Apple: per-field semantic tags for Siri / Maps / Do-Not-Disturb integration.",
                    "additionalProperties": true
                  },
                  "timeStyle": {
                    "enum": [
                      "PKDateStyleNone",
                      "PKDateStyleShort",
                      "PKDateStyleMedium",
                      "PKDateStyleLong",
                      "PKDateStyleFull"
                    ],
                    "type": "string"
                  },
                  "isRelative": {
                    "type": "boolean",
                    "description": "Apple: whether the date is displayed relative to the current time."
                  },
                  "numberStyle": {
                    "enum": [
                      "PKNumberStyleDecimal",
                      "PKNumberStylePercent",
                      "PKNumberStyleScientific",
                      "PKNumberStyleSpellOut"
                    ],
                    "type": "string"
                  },
                  "currencyCode": {
                    "type": "string",
                    "description": "Apple: ISO 4217 currency code. Value is formatted as currency."
                  },
                  "changeMessage": {
                    "type": "string",
                    "description": "Apple: notification text when this field's value changes. Must contain `%@` placeholder for the new value."
                  },
                  "textAlignment": {
                    "enum": [
                      "PKTextAlignmentLeft",
                      "PKTextAlignmentCenter",
                      "PKTextAlignmentRight",
                      "PKTextAlignmentNatural"
                    ],
                    "type": "string"
                  },
                  "attributedValue": {
                    "type": "string",
                    "description": "Apple: HTML-flavored value (used for rendering links, etc.)."
                  },
                  "ignoresTimeZone": {
                    "type": "boolean",
                    "description": "Apple: whether to display the date in the pass's local time rather than the user's."
                  },
                  "dataDetectorTypes": {
                    "type": "array",
                    "items": {
                      "enum": [
                        "PKDataDetectorTypePhoneNumber",
                        "PKDataDetectorTypeLink",
                        "PKDataDetectorTypeAddress",
                        "PKDataDetectorTypeCalendarEvent"
                      ],
                      "type": "string"
                    },
                    "description": "Apple: back fields only. Limits which kinds of data are detected and linked."
                  }
                },
                "description": "A single field inside a pass. Used in `headerFields`, `primaryFields`,\n`secondaryFields`, `auxiliaryFields`, `backFields`, and\n`additionalInfoFields` (poster-style eventTicket only).\n"
              }
            },
            "accessibilityURL": {
              "type": "string",
              "format": "uri"
            },
            "addChangeInfoURL": {
              "type": "string",
              "format": "uri"
            },
            "baggagePolicyURL": {
              "type": "string",
              "format": "uri"
            },
            "entertainmentURL": {
              "type": "string",
              "format": "uri"
            },
            "eventNumberLabel": {
              "type": "string"
            },
            "liveBroadcastURL": {
              "type": "string",
              "format": "uri"
            },
            "organizationName": {
              "type": "string",
              "description": "Apple top-level org name. Defaults to 'PassFast' if unset."
            },
            "cardNumberDataKey": {
              "type": "string"
            },
            "contactVenueEmail": {
              "type": "string",
              "format": "email"
            },
            "googleTransitType": {
              "enum": [
                "BUS",
                "RAIL",
                "TRAM",
                "FERRY",
                "OTHER"
              ],
              "type": "string",
              "description": "Google Wallet transit class transitType enum. Auto-derived from Apple's `transitType` if not set explicitly."
            },
            "redemptionChannel": {
              "enum": [
                "INSTORE",
                "ONLINE",
                "BOTH",
                "TEMPORARY_PRICE_REDUCTION"
              ],
              "type": "string",
              "description": "Google Wallet OfferClass redemption channel."
            },
            "securityAnimation": {
              "type": "object",
              "additionalProperties": true
            },
            "eventNumberDataKey": {
              "type": "string"
            },
            "groupingIdentifier": {
              "type": "string",
              "description": "Apple: groups related passes. Also mapped to Google's `groupingInfo.groupingId` on the object."
            },
            "loyaltyPointsLabel": {
              "type": "string"
            },
            "purchaseParkingURL": {
              "type": "string",
              "format": "uri"
            },
            "suppressStripShine": {
              "type": "boolean"
            },
            "useAutomaticColors": {
              "type": "boolean"
            },
            "balanceCurrencyCode": {
              "type": "string",
              "description": "ISO 4217 code used when `balance` is supplied as a plain number (dollars → micros)."
            },
            "contactVenueWebsite": {
              "type": "string",
              "format": "uri"
            },
            "discoverableProgram": {
              "type": "object",
              "description": "Google Loyalty: public program listing. Requires `countryCode` on the class (set via `discoverableProgram`).",
              "additionalProperties": true
            },
            "ticketNumberDataKey": {
              "type": "string"
            },
            "transitOperatorName": {
              "type": "string"
            },
            "additionalInfoFields": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "key"
                ],
                "properties": {
                  "key": {
                    "type": "string",
                    "description": "Unique key identifying the field. Must be unique across ALL field groups in a template."
                  },
                  "row": {
                    "enum": [
                      0,
                      1
                    ],
                    "type": "integer",
                    "description": "Apple: auxiliary/secondary layout control (0 or 1)."
                  },
                  "label": {
                    "type": "string",
                    "description": "Human-readable label rendered above the value on the pass face."
                  },
                  "value": {
                    "oneOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      }
                    ],
                    "description": "Static value for the field. Number types are preserved for\nApple's `numberStyle` / `currencyCode` formatters. For dynamic\nvalues, omit `value` and set `dataKey` instead.\n"
                  },
                  "dataKey": {
                    "type": "string",
                    "description": "PassFast-specific: name of a key in the generate-pass request\nbody's `data` object whose value should populate this field.\n"
                  },
                  "dateStyle": {
                    "enum": [
                      "PKDateStyleNone",
                      "PKDateStyleShort",
                      "PKDateStyleMedium",
                      "PKDateStyleLong",
                      "PKDateStyleFull"
                    ],
                    "type": "string"
                  },
                  "semantics": {
                    "type": "object",
                    "description": "Apple: per-field semantic tags for Siri / Maps / Do-Not-Disturb integration.",
                    "additionalProperties": true
                  },
                  "timeStyle": {
                    "enum": [
                      "PKDateStyleNone",
                      "PKDateStyleShort",
                      "PKDateStyleMedium",
                      "PKDateStyleLong",
                      "PKDateStyleFull"
                    ],
                    "type": "string"
                  },
                  "isRelative": {
                    "type": "boolean",
                    "description": "Apple: whether the date is displayed relative to the current time."
                  },
                  "numberStyle": {
                    "enum": [
                      "PKNumberStyleDecimal",
                      "PKNumberStylePercent",
                      "PKNumberStyleScientific",
                      "PKNumberStyleSpellOut"
                    ],
                    "type": "string"
                  },
                  "currencyCode": {
                    "type": "string",
                    "description": "Apple: ISO 4217 currency code. Value is formatted as currency."
                  },
                  "changeMessage": {
                    "type": "string",
                    "description": "Apple: notification text when this field's value changes. Must contain `%@` placeholder for the new value."
                  },
                  "textAlignment": {
                    "enum": [
                      "PKTextAlignmentLeft",
                      "PKTextAlignmentCenter",
                      "PKTextAlignmentRight",
                      "PKTextAlignmentNatural"
                    ],
                    "type": "string"
                  },
                  "attributedValue": {
                    "type": "string",
                    "description": "Apple: HTML-flavored value (used for rendering links, etc.)."
                  },
                  "ignoresTimeZone": {
                    "type": "boolean",
                    "description": "Apple: whether to display the date in the pass's local time rather than the user's."
                  },
                  "dataDetectorTypes": {
                    "type": "array",
                    "items": {
                      "enum": [
                        "PKDataDetectorTypePhoneNumber",
                        "PKDataDetectorTypeLink",
                        "PKDataDetectorTypeAddress",
                        "PKDataDetectorTypeCalendarEvent"
                      ],
                      "type": "string"
                    },
                    "description": "Apple: back fields only. Limits which kinds of data are detected and linked."
                  }
                },
                "description": "A single field inside a pass. Used in `headerFields`, `primaryFields`,\n`secondaryFields`, `auxiliaryFields`, `backFields`, and\n`additionalInfoFields` (poster-style eventTicket only).\n"
              },
              "description": "Apple poster-style eventTicket only. Rendered inside the eventTicket object."
            },
            "loyaltyPointsDataKey": {
              "type": "string"
            },
            "footerBackgroundColor": {
              "type": "string"
            },
            "parkingInformationURL": {
              "type": "string",
              "format": "uri"
            },
            "transitInformationURL": {
              "type": "string",
              "format": "uri"
            },
            "viewUnlockRequirement": {
              "enum": [
                "UNLOCK_REQUIRED_TO_VIEW",
                "VIEW_UNLOCK_REQUIREMENT_UNSPECIFIED"
              ],
              "type": "string"
            },
            "contactVenuePhoneNumber": {
              "type": "string"
            },
            "smartTapRedemptionValue": {
              "type": "string"
            },
            "suppressHeaderDarkening": {
              "type": "boolean"
            },
            "ticketHolderNameDataKey": {
              "type": "string"
            },
            "directionsInformationURL": {
              "type": "string",
              "format": "uri"
            },
            "smartTapRedemptionDataKey": {
              "type": "string"
            },
            "associatedStoreIdentifiers": {
              "type": "array",
              "items": {
                "type": "integer"
              },
              "description": "Apple iTunes app IDs for 'Open in App'."
            },
            "secondaryLoyaltyPointsLabel": {
              "type": "string"
            },
            "localScheduledArrivalDateTime": {
              "type": "string",
              "description": "Google Flight: same format as departure."
            },
            "secondaryLoyaltyPointsDataKey": {
              "type": "string"
            },
            "localScheduledDepartureDateTime": {
              "type": "string",
              "description": "Google Flight: ISO 8601 **without** timezone offset (local airport time). Automatically stripped if a Z/offset is supplied."
            }
          },
          "description": "Complete pass structure. Drives both Apple `pass.json` emission and\nGoogle Wallet class/object JSON. Fields are grouped below by platform,\nbut the single JSONB object carries all of them for dual-wallet templates.\n",
          "additionalProperties": true
        },
        "pass_style": {
          "enum": [
            "boardingPass",
            "coupon",
            "eventTicket",
            "generic",
            "storeCard"
          ],
          "type": "string",
          "description": "Apple Wallet pass style."
        },
        "description": {
          "type": "string"
        },
        "field_schema": {
          "type": "object",
          "additionalProperties": true
        },
        "wallet_types": {
          "type": "array",
          "items": {
            "enum": [
              "apple",
              "google"
            ],
            "type": "string"
          },
          "description": "Wallet platforms this template supports."
        },
        "icon_image_id": {
          "type": "string",
          "format": "uuid"
        },
        "logo_image_id": {
          "type": "string",
          "format": "uuid"
        },
        "strip_image_id": {
          "type": "string",
          "format": "uuid"
        },
        "google_pass_type": {
          "allOf": [
            {
              "enum": [
                "generic",
                "loyalty",
                "eventTicket",
                "offer",
                "flight",
                "transit",
                "giftCard"
              ],
              "type": "string",
              "description": "Google Wallet class type override. If unset, PassFast auto-maps from\nthe Apple `pass_style` (+ `structure.transitType` for boardingPass):\n- `generic` → generic\n- `storeCard` → loyalty (or giftCard via override)\n- `eventTicket` → eventTicket\n- `coupon` → offer\n- `boardingPass` + transitType PKTransitTypeAir → flight\n- `boardingPass` + transitType Train/Bus/Boat/Generic → transit\n"
            }
          ]
        },
        "thumbnail_image_id": {
          "type": "string",
          "format": "uuid"
        },
        "background_image_id": {
          "type": "string",
          "format": "uuid"
        },
        "google_logo_image_id": {
          "type": "string",
          "format": "uuid"
        },
        "google_wide_logo_image_id": {
          "type": "string",
          "format": "uuid"
        }
      },
      "additionalProperties": false
    }
    arguments 1397 lines
  • getManagedSigningStatus reads unknown never probed

    Check managed signing availability Returns whether managed (platform) signing credentials are available for Apple and Google wallets. When `apple_ready` or `google_ready` is `true`, apps can use `signing_mode: "managed"` or `google_signing_mode: "managed"` without uploading their own credentials. **Scope:** `org:read` Maps to OpenAPI operationId `getManagedSigningStatus` — GET /manage-org/managed-signing-status. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "properties": {},
      "additionalProperties": false
    }
    arguments 5 lines
  • deleteApiKey unknown never probed

    Delete an API key Permanently deletes an API key. The key **must be revoked first** (via PATCH) before it can be deleted. Attempting to delete an active key returns 400. **Scope:** `org:manage` Maps to OpenAPI operationId `deleteApiKey` — DELETE /manage-keys/{id}. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid",
          "description": "API key ID."
        }
      },
      "additionalProperties": false
    }
    arguments 14 lines
  • publishTemplate changes data unknown never probed

    Publish a template Publishes a draft template, making it available for pass generation. Published templates cannot be modified. **Scope:** `templates:manage` Maps to OpenAPI operationId `publishTemplate` — POST /manage-templates/{id}/publish. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid",
          "description": "Template ID."
        },
        "x_app_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override X-App-Id for this call. Omit the connection header by default; set it only for multi-app orgs."
        }
      },
      "additionalProperties": false
    }
    arguments 19 lines
  • uploadImage unknown never probed

    Upload an image Uploads an image for use in pass templates or per-pass strip overrides. Send as multipart form data with a `purpose` field and a `file` field containing the PNG image. **Upload behaviour by purpose:** - `strip` — **accumulates**. Each upload creates a new image; the returned `id` can be passed as `strip_image_id` on `POST /v1/passes` or `PATCH /v1/passes/{id}` to give individual passes their own banner. Previous `strip` images are NOT deleted — manage them via `DELETE /v1/images/{id}` when no longer referenced. - All other purposes (`icon`, `logo`, `thumbnail`, `background`, `footer`, and all `_2x`/`_3x` variants) — **replace-on-upload**. Uploading a new image of the same purpose deletes the previous one from storage and DB. These are app-wide template assets, not per-pass. **Scope:** `images:manage` Maps to OpenAPI operationId `uploadImage` — POST /manage-images. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "required": [
        "purpose",
        "file_base64"
      ],
      "properties": {
        "purpose": {
          "enum": [
            "icon",
            "icon_2x",
            "icon_3x",
            "logo",
            "logo_2x",
            "logo_3x",
            "thumbnail",
            "thumbnail_2x",
            "strip",
            "strip_2x",
            "background",
            "background_2x",
            "footer",
            "footer_2x"
          ],
          "type": "string",
          "description": "The intended use of the image. `strip` uploads accumulate\n(for per-pass `strip_image_id` overrides); all other purposes\nreplace existing uploads of the same purpose for the app.\n"
        },
        "filename": {
          "type": "string",
          "description": "Optional filename sent with the multipart upload."
        },
        "x_app_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override X-App-Id for this call. Omit the connection header by default; set it only for multi-app orgs."
        },
        "file_base64": {
          "type": "string",
          "description": "Base64-encoded file bytes. Maps to the OpenAPI multipart `file` field — same uploadImage (or equivalent) endpoint, not a new API."
        }
      },
      "additionalProperties": false
    }
    arguments 43 lines
  • uploadP12Certificate changes data unknown never probed

    Upload a .p12 certificate bundle Uploads a PKCS#12 (.p12) bundle containing signer certificate and private key. The bundle is decrypted with the provided password, and individual certificates are extracted and stored with AES-256-GCM encryption. **Scope:** `certs:manage` Maps to OpenAPI operationId `uploadP12Certificate` — POST /manage-certs/p12. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "required": [
        "p12_data"
      ],
      "properties": {
        "p12_data": {
          "type": "string",
          "format": "byte",
          "description": "Base64-encoded .p12 file data."
        },
        "password": {
          "type": "string",
          "description": "Password to decrypt the .p12 bundle (if password-protected)."
        },
        "x_app_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override X-App-Id for this call. Omit the connection header by default; set it only for multi-app orgs."
        }
      },
      "additionalProperties": false
    }
    arguments 23 lines
  • deleteCertificate unknown never probed

    Delete a certificate Deletes a certificate. **Scope:** `certs:manage` Maps to OpenAPI operationId `deleteCertificate` — DELETE /manage-certs/{id}. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid",
          "description": "Certificate ID."
        },
        "x_app_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override X-App-Id for this call. Omit the connection header by default; set it only for multi-app orgs."
        }
      },
      "additionalProperties": false
    }
    arguments 19 lines
  • deactivateGoogleCredential unknown never probed

    Deactivate Google credential Deactivates a Google Wallet credential. **Scope:** `certs:manage` Maps to OpenAPI operationId `deactivateGoogleCredential` — DELETE /manage-certs/google/{id}. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid",
          "description": "Google credential ID."
        },
        "x_app_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override X-App-Id for this call. Omit the connection header by default; set it only for multi-app orgs."
        }
      },
      "additionalProperties": false
    }
    arguments 19 lines
  • testAppleCertificates unknown never probed

    Test Apple certificates Generates an ephemeral test `.pkpass` file to verify that the uploaded Apple signing certificates are valid and complete. The test pass is not stored — it is returned directly as a binary download. **Scope:** `certs:manage` Maps to OpenAPI operationId `testAppleCertificates` — POST /manage-certs/test. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "x_app_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override X-App-Id for this call. Omit the connection header by default; set it only for multi-app orgs."
        }
      },
      "additionalProperties": false
    }
    arguments 11 lines
  • updateOrganization changes data unknown never probed

    Update organization settings Updates the current organization's settings, including APNs credentials. **Scope:** `org:manage` Maps to OpenAPI operationId `updateOrganization` — PATCH /manage-org. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Organization display name."
        },
        "slug": {
          "type": "string",
          "description": "URL-friendly slug."
        },
        "apns_key_id": {
          "type": "string",
          "description": "Apple Push Notification service Key ID."
        },
        "apns_key_p8": {
          "type": "string",
          "description": "APNs .p8 private key contents."
        }
      },
      "additionalProperties": false
    }
    arguments 22 lines
  • updateApp unknown never probed

    Update app settings Updates the current app's settings, including webhook configuration. Set `regenerate_webhook_secret` to `true` to generate a new webhook signing secret; the new secret is returned in `webhook_secret_raw` (shown only once). **Scope:** `org:manage` Maps to OpenAPI operationId `updateApp` — PATCH /manage-org/app. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "App display name."
        },
        "x_app_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override X-App-Id for this call. Omit the connection header by default; set it only for multi-app orgs."
        },
        "webhook_url": {
          "type": "string",
          "format": "uri",
          "description": "URL for async event webhook delivery."
        },
        "signing_mode": {
          "enum": [
            "managed",
            "custom"
          ],
          "type": "string",
          "description": "Apple signing mode. `managed` uses platform credentials; `custom` uses your own."
        },
        "apple_team_id": {
          "type": "string",
          "description": "Apple Developer Team ID."
        },
        "google_signing_mode": {
          "enum": [
            "managed",
            "custom"
          ],
          "type": "string",
          "description": "Google signing mode. `managed` uses platform credentials; `custom` uses your own."
        },
        "onboarding_completed": {
          "type": "boolean",
          "description": "Whether onboarding has been completed for this app."
        },
        "pass_type_identifier": {
          "type": "string",
          "description": "Apple pass type identifier (e.g., pass.com.example.myapp)."
        },
        "validation_webhook_url": {
          "type": "string",
          "format": "uri",
          "description": "URL for pre-generation validation webhooks."
        },
        "regenerate_webhook_secret": {
          "type": "boolean",
          "description": "Set to true to regenerate the webhook signing secret."
        }
      },
      "additionalProperties": false
    }
    arguments 57 lines
  • createShareToken changes data unknown never probed

    Create a share token Creates a public share token for a pass, enabling distribution via URL, QR code, or messaging. The share URL points to a public page where recipients can add the pass to Apple or Google Wallet without logging in. Idempotent — if the pass already has a share token, the existing token is returned (200) instead of creating a new one (201). For dual-wallet passes (same serial number with both Apple and Google), the share token is automatically applied to all sibling passes. **Scope:** `passes:manage` Maps to OpenAPI operationId `createShareToken` — POST /share-pass/create. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "required": [
        "pass_id"
      ],
      "properties": {
        "pass_id": {
          "type": "string",
          "format": "uuid",
          "description": "ID of the pass to share."
        },
        "x_app_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override X-App-Id for this call. Omit the connection header by default; set it only for multi-app orgs."
        }
      },
      "additionalProperties": false
    }
    arguments 19 lines
  • createTemplate changes data unknown never probed

    Create a template Creates a new pass template in draft status. **Scope:** `templates:manage` Maps to OpenAPI operationId `createTemplate` — POST /manage-templates. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "required": [
        "name",
        "pass_style",
        "structure"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "Human-readable template name."
        },
        "x_app_id": {
          "type": "string",
          "format": "uuid",
          "description": "Override X-App-Id for this call. Omit the connection header by default; set it only for multi-app orgs."
        },
        "structure": {
          "type": "object",
          "required": [
            "backgroundColor",
            "foregroundColor"
          ],
          "properties": {
            "nfc": {
              "type": "object",
              "required": [
                "message"
              ],
              "properties": {
                "message": {
                  "type": "string",
                  "description": "The data transmitted during an NFC interaction."
                },
                "encryptionPublicKey": {
                  "type": "string",
                  "description": "ECC P-256 public key (base64-encoded) for encrypting the NFC payload."
                },
                "requiresAuthentication": {
                  "type": "boolean"
                }
              }
            },
            "origin": {
              "type": "object",
              "required": [
                "airportIataCode"
              ],
              "properties": {
                "gate": {
                  "type": "string"
                },
                "terminal": {
                  "type": "string"
                },
                "airportIataCode": {
                  "type": "string",
                  "description": "3-letter IATA airport code (e.g. `LHR`, `JFK`)."
                }
              }
            },
            "barcode": {
              "type": "object",
              "properties": {
                "format": {
                  "enum": [
                    "PKBarcodeFormatQR",
                    "PKBarcodeFormatPDF417",
                    "PKBarcodeFormatAztec",
                    "PKBarcodeFormatCode128"
                  ],
                  "type": "string",
                  "description": "Apple Wallet barcode format. Automatically mapped to Google's equivalent (QR_CODE, PDF_417, AZTEC, CODE_128) when the template targets Google Wallet."
                },
                "altText": {
                  "type": "string",
                  "description": "Static alternate text. Only used when `altTextDataKey` is not set."
                },
                "altTextDataKey": {
                  "type": "string",
                  "description": "Key in generate-pass `data` object whose value becomes the human-readable alt text."
                },
                "messageDataKey": {
                  "type": "string",
                  "description": "Key in generate-pass `data` object that holds the barcode message."
                },
                "messageEncoding": {
                  "type": "string",
                  "default": "iso-8859-1",
                  "description": "Text encoding for the barcode message. Default is `iso-8859-1` per Apple spec."
                }
              }
            },
            "beacons": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "proximityUUID"
                ],
                "properties": {
                  "major": {
                    "type": "integer"
                  },
                  "minor": {
                    "type": "integer"
                  },
                  "relevantText": {
                    "type": "string"
                  },
                  "proximityUUID": {
                    "type": "string",
                    "format": "uuid"
                  }
                }
              }
            },
            "sellURL": {
              "type": "string",
              "format": "uri"
            },
            "addOnURL": {
              "type": "string",
              "format": "uri"
            },
            "logoText": {
              "type": "string",
              "description": "Apple: text beside the logo on the pass face."
            },
            "messages": {
              "type": "array",
              "items": {
                "type": "object",
                "additionalProperties": true
              },
              "description": "Google class-level messages."
            },
            "pinLabel": {
              "type": "string"
            },
            "tripType": {
              "enum": [
                "ROUND_TRIP",
                "ONE_WAY"
              ],
              "type": "string"
            },
            "doorsOpen": {
              "type": "string",
              "format": "date-time"
            },
            "jumpToURL": {
              "type": "string",
              "format": "uri"
            },
            "locations": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "latitude",
                  "longitude"
                ],
                "properties": {
                  "altitude": {
                    "type": "number"
                  },
                  "latitude": {
                    "type": "number"
                  },
                  "longitude": {
                    "type": "number"
                  },
                  "relevantText": {
                    "type": "string",
                    "description": "Apple: lock-screen text when the device enters this location."
                  }
                }
              }
            },
            "semantics": {
              "type": "object",
              "description": "Apple: top-level semantic tags (event, transit, balance categories).",
              "additionalProperties": true
            },
            "venueName": {
              "type": "string"
            },
            "backFields": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "key"
                ],
                "properties": {
                  "key": {
                    "type": "string",
                    "description": "Unique key identifying the field. Must be unique across ALL field groups in a template."
                  },
                  "row": {
                    "enum": [
                      0,
                      1
                    ],
                    "type": "integer",
                    "description": "Apple: auxiliary/secondary layout control (0 or 1)."
                  },
                  "label": {
                    "type": "string",
                    "description": "Human-readable label rendered above the value on the pass face."
                  },
                  "value": {
                    "oneOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      }
                    ],
                    "description": "Static value for the field. Number types are preserved for\nApple's `numberStyle` / `currencyCode` formatters. For dynamic\nvalues, omit `value` and set `dataKey` instead.\n"
                  },
                  "dataKey": {
                    "type": "string",
                    "description": "PassFast-specific: name of a key in the generate-pass request\nbody's `data` object whose value should populate this field.\n"
                  },
                  "dateStyle": {
                    "enum": [
                      "PKDateStyleNone",
                      "PKDateStyleShort",
                      "PKDateStyleMedium",
                      "PKDateStyleLong",
                      "PKDateStyleFull"
                    ],
                    "type": "string"
                  },
                  "semantics": {
                    "type": "object",
                    "description": "Apple: per-field semantic tags for Siri / Maps / Do-Not-Disturb integration.",
                    "additionalProperties": true
                  },
                  "timeStyle": {
                    "enum": [
                      "PKDateStyleNone",
                      "PKDateStyleShort",
                      "PKDateStyleMedium",
                      "PKDateStyleLong",
                      "PKDateStyleFull"
                    ],
                    "type": "string"
                  },
                  "isRelative": {
                    "type": "boolean",
                    "description": "Apple: whether the date is displayed relative to the current time."
                  },
                  "numberStyle": {
                    "enum": [
                      "PKNumberStyleDecimal",
                      "PKNumberStylePercent",
                      "PKNumberStyleScientific",
                      "PKNumberStyleSpellOut"
                    ],
                    "type": "string"
                  },
                  "currencyCode": {
                    "type": "string",
                    "description": "Apple: ISO 4217 currency code. Value is formatted as currency."
                  },
                  "changeMessage": {
                    "type": "string",
                    "description": "Apple: notification text when this field's value changes. Must contain `%@` placeholder for the new value."
                  },
                  "textAlignment": {
                    "enum": [
                      "PKTextAlignmentLeft",
                      "PKTextAlignmentCenter",
                      "PKTextAlignmentRight",
                      "PKTextAlignmentNatural"
                    ],
                    "type": "string"
                  },
                  "attributedValue": {
                    "type": "string",
                    "description": "Apple: HTML-flavored value (used for rendering links, etc.)."
                  },
                  "ignoresTimeZone": {
                    "type": "boolean",
                    "description": "Apple: whether to display the date in the pass's local time rather than the user's."
                  },
                  "dataDetectorTypes": {
                    "type": "array",
                    "items": {
                      "enum": [
                        "PKDataDetectorTypePhoneNumber",
                        "PKDataDetectorTypeLink",
                        "PKDataDetectorTypeAddress",
                        "PKDataDetectorTypeCalendarEvent"
                      ],
                      "type": "string"
                    },
                    "description": "Apple: back fields only. Limits which kinds of data are detected and linked."
                  }
                },
                "description": "A single field inside a pass. Used in `headerFields`, `primaryFields`,\n`secondaryFields`, `auxiliaryFields`, `backFields`, and\n`additionalInfoFields` (poster-style eventTicket only).\n"
              }
            },
            "bagDropURL": {
              "type": "string",
              "format": "uri"
            },
            "checkInURL": {
              "type": "string",
              "format": "uri"
            },
            "labelColor": {
              "type": "string",
              "description": "Apple only — field label color."
            },
            "pinDataKey": {
              "type": "string"
            },
            "rowDataKey": {
              "type": "string"
            },
            "dateTimeEnd": {
              "type": "string",
              "format": "date-time"
            },
            "description": {
              "type": "string",
              "description": "Apple top-level description. Defaults to 'PassFast Pass' if unset."
            },
            "destination": {
              "type": "object",
              "required": [
                "airportIataCode"
              ],
              "properties": {
                "gate": {
                  "type": "string"
                },
                "terminal": {
                  "type": "string"
                },
                "airportIataCode": {
                  "type": "string",
                  "description": "3-letter IATA airport code (e.g. `LHR`, `JFK`)."
                }
              }
            },
            "gateDataKey": {
              "type": "string"
            },
            "maxDistance": {
              "type": "integer",
              "description": "Apple only — max distance (meters) for location relevance."
            },
            "seatDataKey": {
              "type": "string"
            },
            "shoppingURL": {
              "type": "string",
              "format": "uri"
            },
            "transferURL": {
              "type": "string",
              "format": "uri"
            },
            "transitType": {
              "enum": [
                "PKTransitTypeAir",
                "PKTransitTypeTrain",
                "PKTransitTypeBus",
                "PKTransitTypeBoat",
                "PKTransitTypeGeneric"
              ],
              "type": "string",
              "description": "Apple Wallet transitType enum. Required for `boardingPass` templates at publish."
            },
            "appLaunchURL": {
              "type": "string",
              "format": "uri"
            },
            "flightHeader": {
              "type": "object",
              "required": [
                "carrier",
                "flightNumber"
              ],
              "properties": {
                "carrier": {
                  "type": "object",
                  "required": [
                    "carrierIataCode"
                  ],
                  "properties": {
                    "carrierIataCode": {
                      "type": "string",
                      "description": "2-letter IATA carrier code (e.g. `BA`, `AA`)."
                    }
                  }
                },
                "flightNumber": {
                  "type": "string",
                  "description": "Flight number (digits only per Google spec)."
                }
              }
            },
            "headerFields": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "key"
                ],
                "properties": {
                  "key": {
                    "type": "string",
                    "description": "Unique key identifying the field. Must be unique across ALL field groups in a template."
                  },
                  "row": {
                    "enum": [
                      0,
                      1
                    ],
                    "type": "integer",
                    "description": "Apple: auxiliary/secondary layout control (0 or 1)."
                  },
                  "label": {
                    "type": "string",
                    "description": "Human-readable label rendered above the value on the pass face."
                  },
                  "value": {
                    "oneOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      }
                    ],
                    "description": "Static value for the field. Number types are preserved for\nApple's `numberStyle` / `currencyCode` formatters. For dynamic\nvalues, omit `value` and set `dataKey` instead.\n"
                  },
                  "dataKey": {
                    "type": "string",
                    "description": "PassFast-specific: name of a key in the generate-pass request\nbody's `data` object whose value should populate this field.\n"
                  },
                  "dateStyle": {
                    "enum": [
                      "PKDateStyleNone",
                      "PKDateStyleShort",
                      "PKDateStyleMedium",
                      "PKDateStyleLong",
                      "PKDateStyleFull"
                    ],
                    "type": "string"
                  },
                  "semantics": {
                    "type": "object",
                    "description": "Apple: per-field semantic tags for Siri / Maps / Do-Not-Disturb integration.",
                    "additionalProperties": true
                  },
                  "timeStyle": {
                    "enum": [
                      "PKDateStyleNone",
                      "PKDateStyleShort",
                      "PKDateStyleMedium",
                      "PKDateStyleLong",
                      "PKDateStyleFull"
                    ],
                    "type": "string"
                  },
                  "isRelative": {
                    "type": "boolean",
                    "description": "Apple: whether the date is displayed relative to the current time."
                  },
                  "numberStyle": {
                    "enum": [
                      "PKNumberStyleDecimal",
                      "PKNumberStylePercent",
                      "PKNumberStyleScientific",
                      "PKNumberStyleSpellOut"
                    ],
                    "type": "string"
                  },
                  "currencyCode": {
                    "type": "string",
                    "description": "Apple: ISO 4217 currency code. Value is formatted as currency."
                  },
                  "changeMessage": {
                    "type": "string",
                    "description": "Apple: notification text when this field's value changes. Must contain `%@` placeholder for the new value."
                  },
                  "textAlignment": {
                    "enum": [
                      "PKTextAlignmentLeft",
                      "PKTextAlignmentCenter",
                      "PKTextAlignmentRight",
                      "PKTextAlignmentNatural"
                    ],
                    "type": "string"
                  },
                  "attributedValue": {
                    "type": "string",
                    "description": "Apple: HTML-flavored value (used for rendering links, etc.)."
                  },
                  "ignoresTimeZone": {
                    "type": "boolean",
                    "description": "Apple: whether to display the date in the pass's local time rather than the user's."
                  },
                  "dataDetectorTypes": {
                    "type": "array",
                    "items": {
                      "enum": [
                        "PKDataDetectorTypePhoneNumber",
                        "PKDataDetectorTypeLink",
                        "PKDataDetectorTypeAddress",
                        "PKDataDetectorTypeCalendarEvent"
                      ],
                      "type": "string"
                    },
                    "description": "Apple: back fields only. Limits which kinds of data are detected and linked."
                  }
                },
                "description": "A single field inside a pass. Used in `headerFields`, `primaryFields`,\n`secondaryFields`, `auxiliaryFields`, `backFields`, and\n`additionalInfoFields` (poster-style eventTicket only).\n"
              }
            },
            "orderFoodURL": {
              "type": "string",
              "format": "uri"
            },
            "relevantDate": {
              "type": "string",
              "format": "date-time",
              "description": "ISO 8601 datetime with timezone suffix. Naive datetimes (no Z/offset) are rejected."
            },
            "trackBagsURL": {
              "type": "string",
              "format": "uri"
            },
            "venueAddress": {
              "type": "string"
            },
            "changeSeatURL": {
              "type": "string",
              "format": "uri"
            },
            "dateTimeStart": {
              "type": "string",
              "format": "date-time"
            },
            "eventLogoText": {
              "type": "string"
            },
            "primaryFields": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "key"
                ],
                "properties": {
                  "key": {
                    "type": "string",
                    "description": "Unique key identifying the field. Must be unique across ALL field groups in a template."
                  },
                  "row": {
                    "enum": [
                      0,
                      1
                    ],
                    "type": "integer",
                    "description": "Apple: auxiliary/secondary layout control (0 or 1)."
                  },
                  "label": {
                    "type": "string",
                    "description": "Human-readable label rendered above the value on the pass face."
                  },
                  "value": {
                    "oneOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      }
                    ],
                    "description": "Static value for the field. Number types are preserved for\nApple's `numberStyle` / `currencyCode` formatters. For dynamic\nvalues, omit `value` and set `dataKey` instead.\n"
                  },
                  "dataKey": {
                    "type": "string",
                    "description": "PassFast-specific: name of a key in the generate-pass request\nbody's `data` object whose value should populate this field.\n"
                  },
                  "dateStyle": {
                    "enum": [
                      "PKDateStyleNone",
                      "PKDateStyleShort",
                      "PKDateStyleMedium",
                      "PKDateStyleLong",
                      "PKDateStyleFull"
                    ],
                    "type": "string"
                  },
                  "semantics": {
                    "type": "object",
                    "description": "Apple: per-field semantic tags for Siri / Maps / Do-Not-Disturb integration.",
                    "additionalProperties": true
                  },
                  "timeStyle": {
                    "enum": [
                      "PKDateStyleNone",
                      "PKDateStyleShort",
                      "PKDateStyleMedium",
                      "PKDateStyleLong",
                      "PKDateStyleFull"
                    ],
                    "type": "string"
                  },
                  "isRelative": {
                    "type": "boolean",
                    "description": "Apple: whether the date is displayed relative to the current time."
                  },
                  "numberStyle": {
                    "enum": [
                      "PKNumberStyleDecimal",
                      "PKNumberStylePercent",
                      "PKNumberStyleScientific",
                      "PKNumberStyleSpellOut"
                    ],
                    "type": "string"
                  },
                  "currencyCode": {
                    "type": "string",
                    "description": "Apple: ISO 4217 currency code. Value is formatted as currency."
                  },
                  "changeMessage": {
                    "type": "string",
                    "description": "Apple: notification text when this field's value changes. Must contain `%@` placeholder for the new value."
                  },
                  "textAlignment": {
                    "enum": [
                      "PKTextAlignmentLeft",
                      "PKTextAlignmentCenter",
                      "PKTextAlignmentRight",
                      "PKTextAlignmentNatural"
                    ],
                    "type": "string"
                  },
                  "attributedValue": {
                    "type": "string",
                    "description": "Apple: HTML-flavored value (used for rendering links, etc.)."
                  },
                  "ignoresTimeZone": {
                    "type": "boolean",
                    "description": "Apple: whether to display the date in the pass's local time rather than the user's."
                  },
                  "dataDetectorTypes": {
                    "type": "array",
                    "items": {
                      "enum": [
                        "PKDataDetectorTypePhoneNumber",
                        "PKDataDetectorTypeLink",
                        "PKDataDetectorTypeAddress",
                        "PKDataDetectorTypeCalendarEvent"
                      ],
                      "type": "string"
                    },
                    "description": "Apple: back fields only. Limits which kinds of data are detected and linked."
                  }
                },
                "description": "A single field inside a pass. Used in `headerFields`, `primaryFields`,\n`secondaryFields`, `auxiliaryFields`, `backFields`, and\n`additionalInfoFields` (poster-style eventTicket only).\n"
              }
            },
            "relevantDates": {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "string",
                    "format": "date-time"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "endDate": {
                        "type": "string",
                        "format": "date-time"
                      },
                      "startDate": {
                        "type": "string",
                        "format": "date-time"
                      }
                    }
                  }
                ]
              },
              "description": "Apple plural relevantDates[] — multiple time windows. Entries without timezone are filtered out."
            },
            "balanceDataKey": {
              "type": "string"
            },
            "enableSmartTap": {
              "type": "boolean"
            },
            "googleLogoText": {
              "type": "string",
              "description": "Google: brand/card title (required for Google Wallet rendering)."
            },
            "merchandiseURL": {
              "type": "string",
              "format": "uri"
            },
            "objectMessages": {
              "type": "array",
              "items": {
                "type": "object",
                "additionalProperties": true
              }
            },
            "seatUpgradeURL": {
              "type": "string",
              "format": "uri"
            },
            "sectionDataKey": {
              "type": "string"
            },
            "auxiliaryFields": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "key"
                ],
                "properties": {
                  "key": {
                    "type": "string",
                    "description": "Unique key identifying the field. Must be unique across ALL field groups in a template."
                  },
                  "row": {
                    "enum": [
                      0,
                      1
                    ],
                    "type": "integer",
                    "description": "Apple: auxiliary/secondary layout control (0 or 1)."
                  },
                  "label": {
                    "type": "string",
                    "description": "Human-readable label rendered above the value on the pass face."
                  },
                  "value": {
                    "oneOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      }
                    ],
                    "description": "Static value for the field. Number types are preserved for\nApple's `numberStyle` / `currencyCode` formatters. For dynamic\nvalues, omit `value` and set `dataKey` instead.\n"
                  },
                  "dataKey": {
                    "type": "string",
                    "description": "PassFast-specific: name of a key in the generate-pass request\nbody's `data` object whose value should populate this field.\n"
                  },
                  "dateStyle": {
                    "enum": [
                      "PKDateStyleNone",
                      "PKDateStyleShort",
                      "PKDateStyleMedium",
                      "PKDateStyleLong",
                      "PKDateStyleFull"
                    ],
                    "type": "string"
                  },
                  "semantics": {
                    "type": "object",
                    "description": "Apple: per-field semantic tags for Siri / Maps / Do-Not-Disturb integration.",
                    "additionalProperties": true
                  },
                  "timeStyle": {
                    "enum": [
                      "PKDateStyleNone",
                      "PKDateStyleShort",
                      "PKDateStyleMedium",
                      "PKDateStyleLong",
                      "PKDateStyleFull"
                    ],
                    "type": "string"
                  },
                  "isRelative": {
                    "type": "boolean",
                    "description": "Apple: whether the date is displayed relative to the current time."
                  },
                  "numberStyle": {
                    "enum": [
                      "PKNumberStyleDecimal",
                      "PKNumberStylePercent",
                      "PKNumberStyleScientific",
                      "PKNumberStyleSpellOut"
                    ],
                    "type": "string"
                  },
                  "currencyCode": {
                    "type": "string",
                    "description": "Apple: ISO 4217 currency code. Value is formatted as currency."
                  },
                  "changeMessage": {
                    "type": "string",
                    "description": "Apple: notification text when this field's value changes. Must contain `%@` placeholder for the new value."
                  },
                  "textAlignment": {
                    "enum": [
                      "PKTextAlignmentLeft",
                      "PKTextAlignmentCenter",
                      "PKTextAlignmentRight",
                      "PKTextAlignmentNatural"
                    ],
                    "type": "string"
                  },
                  "attributedValue": {
                    "type": "string",
                    "description": "Apple: HTML-flavored value (used for rendering links, etc.)."
                  },
                  "ignoresTimeZone": {
                    "type": "boolean",
                    "description": "Apple: whether to display the date in the pass's local time rather than the user's."
                  },
                  "dataDetectorTypes": {
                    "type": "array",
                    "items": {
                      "enum": [
                        "PKDataDetectorTypePhoneNumber",
                        "PKDataDetectorTypeLink",
                        "PKDataDetectorTypeAddress",
                        "PKDataDetectorTypeCalendarEvent"
                      ],
                      "type": "string"
                    },
                    "description": "Apple: back fields only. Limits which kinds of data are detected and linked."
                  }
                },
                "description": "A single field inside a pass. Used in `headerFields`, `primaryFields`,\n`secondaryFields`, `auxiliaryFields`, `backFields`, and\n`additionalInfoFields` (poster-style eventTicket only).\n"
              }
            },
            "backgroundColor": {
              "type": "string",
              "description": "Accepts `#rrggbb`, `#rgb`, or `rgb(r,g,b)`. Apple emits `rgb(...)`; Google emits `#rrggbb`."
            },
            "callbackOptions": {
              "type": "object",
              "additionalProperties": true
            },
            "cardNumberLabel": {
              "type": "string"
            },
            "flightStatusURL": {
              "type": "string",
              "format": "uri"
            },
            "foregroundColor": {
              "type": "string"
            },
            "rotatingBarcode": {
              "type": "object",
              "properties": {
                "type": {
                  "enum": [
                    "QR_CODE",
                    "AZTEC",
                    "PDF_417",
                    "CODE_128",
                    "DATA_MATRIX"
                  ],
                  "type": "string"
                },
                "totpDetails": {
                  "type": "object",
                  "properties": {
                    "algorithm": {
                      "enum": [
                        "TOTP_SHA1",
                        "TOTP_SHA256",
                        "TOTP_SHA512"
                      ],
                      "type": "string"
                    },
                    "parameters": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "key": {
                            "type": "string",
                            "description": "Base16 (hex) encoded TOTP secret."
                          },
                          "valueLength": {
                            "type": "integer"
                          }
                        }
                      }
                    },
                    "periodMillis": {
                      "type": "string",
                      "description": "TOTP period as a string of milliseconds (e.g. `\"30000\"`)."
                    }
                  }
                },
                "valuePattern": {
                  "type": "string",
                  "description": "Pattern for the rotating value, e.g. `rotating-{totp_value}`."
                }
              },
              "description": "Google Wallet rotating barcode (TOTP-based). Supply a pre-configured\nobject; PassFast does not synthesize the HMAC secret.\n"
            },
            "secondaryFields": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "key"
                ],
                "properties": {
                  "key": {
                    "type": "string",
                    "description": "Unique key identifying the field. Must be unique across ALL field groups in a template."
                  },
                  "row": {
                    "enum": [
                      0,
                      1
                    ],
                    "type": "integer",
                    "description": "Apple: auxiliary/secondary layout control (0 or 1)."
                  },
                  "label": {
                    "type": "string",
                    "description": "Human-readable label rendered above the value on the pass face."
                  },
                  "value": {
                    "oneOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      }
                    ],
                    "description": "Static value for the field. Number types are preserved for\nApple's `numberStyle` / `currencyCode` formatters. For dynamic\nvalues, omit `value` and set `dataKey` instead.\n"
                  },
                  "dataKey": {
                    "type": "string",
                    "description": "PassFast-specific: name of a key in the generate-pass request\nbody's `data` object whose value should populate this field.\n"
                  },
                  "dateStyle": {
                    "enum": [
                      "PKDateStyleNone",
                      "PKDateStyleShort",
                      "PKDateStyleMedium",
                      "PKDateStyleLong",
                      "PKDateStyleFull"
                    ],
                    "type": "string"
                  },
                  "semantics": {
                    "type": "object",
                    "description": "Apple: per-field semantic tags for Siri / Maps / Do-Not-Disturb integration.",
                    "additionalProperties": true
                  },
                  "timeStyle": {
                    "enum": [
                      "PKDateStyleNone",
                      "PKDateStyleShort",
                      "PKDateStyleMedium",
                      "PKDateStyleLong",
                      "PKDateStyleFull"
                    ],
                    "type": "string"
                  },
                  "isRelative": {
                    "type": "boolean",
                    "description": "Apple: whether the date is displayed relative to the current time."
                  },
                  "numberStyle": {
                    "enum": [
                      "PKNumberStyleDecimal",
                      "PKNumberStylePercent",
                      "PKNumberStyleScientific",
                      "PKNumberStyleSpellOut"
                    ],
                    "type": "string"
                  },
                  "currencyCode": {
                    "type": "string",
                    "description": "Apple: ISO 4217 currency code. Value is formatted as currency."
                  },
                  "changeMessage": {
                    "type": "string",
                    "description": "Apple: notification text when this field's value changes. Must contain `%@` placeholder for the new value."
                  },
                  "textAlignment": {
                    "enum": [
                      "PKTextAlignmentLeft",
                      "PKTextAlignmentCenter",
                      "PKTextAlignmentRight",
                      "PKTextAlignmentNatural"
                    ],
                    "type": "string"
                  },
                  "attributedValue": {
                    "type": "string",
                    "description": "Apple: HTML-flavored value (used for rendering links, etc.)."
                  },
                  "ignoresTimeZone": {
                    "type": "boolean",
                    "description": "Apple: whether to display the date in the pass's local time rather than the user's."
                  },
                  "dataDetectorTypes": {
                    "type": "array",
                    "items": {
                      "enum": [
                        "PKDataDetectorTypePhoneNumber",
                        "PKDataDetectorTypeLink",
                        "PKDataDetectorTypeAddress",
                        "PKDataDetectorTypeCalendarEvent"
                      ],
                      "type": "string"
                    },
                    "description": "Apple: back fields only. Limits which kinds of data are detected and linked."
                  }
                },
                "description": "A single field inside a pass. Used in `headerFields`, `primaryFields`,\n`secondaryFields`, `auxiliaryFields`, `backFields`, and\n`additionalInfoFields` (poster-style eventTicket only).\n"
              }
            },
            "accessibilityURL": {
              "type": "string",
              "format": "uri"
            },
            "addChangeInfoURL": {
              "type": "string",
              "format": "uri"
            },
            "baggagePolicyURL": {
              "type": "string",
              "format": "uri"
            },
            "entertainmentURL": {
              "type": "string",
              "format": "uri"
            },
            "eventNumberLabel": {
              "type": "string"
            },
            "liveBroadcastURL": {
              "type": "string",
              "format": "uri"
            },
            "organizationName": {
              "type": "string",
              "description": "Apple top-level org name. Defaults to 'PassFast' if unset."
            },
            "cardNumberDataKey": {
              "type": "string"
            },
            "contactVenueEmail": {
              "type": "string",
              "format": "email"
            },
            "googleTransitType": {
              "enum": [
                "BUS",
                "RAIL",
                "TRAM",
                "FERRY",
                "OTHER"
              ],
              "type": "string",
              "description": "Google Wallet transit class transitType enum. Auto-derived from Apple's `transitType` if not set explicitly."
            },
            "redemptionChannel": {
              "enum": [
                "INSTORE",
                "ONLINE",
                "BOTH",
                "TEMPORARY_PRICE_REDUCTION"
              ],
              "type": "string",
              "description": "Google Wallet OfferClass redemption channel."
            },
            "securityAnimation": {
              "type": "object",
              "additionalProperties": true
            },
            "eventNumberDataKey": {
              "type": "string"
            },
            "groupingIdentifier": {
              "type": "string",
              "description": "Apple: groups related passes. Also mapped to Google's `groupingInfo.groupingId` on the object."
            },
            "loyaltyPointsLabel": {
              "type": "string"
            },
            "purchaseParkingURL": {
              "type": "string",
              "format": "uri"
            },
            "suppressStripShine": {
              "type": "boolean"
            },
            "useAutomaticColors": {
              "type": "boolean"
            },
            "balanceCurrencyCode": {
              "type": "string",
              "description": "ISO 4217 code used when `balance` is supplied as a plain number (dollars → micros)."
            },
            "contactVenueWebsite": {
              "type": "string",
              "format": "uri"
            },
            "discoverableProgram": {
              "type": "object",
              "description": "Google Loyalty: public program listing. Requires `countryCode` on the class (set via `discoverableProgram`).",
              "additionalProperties": true
            },
            "ticketNumberDataKey": {
              "type": "string"
            },
            "transitOperatorName": {
              "type": "string"
            },
            "additionalInfoFields": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "key"
                ],
                "properties": {
                  "key": {
                    "type": "string",
                    "description": "Unique key identifying the field. Must be unique across ALL field groups in a template."
                  },
                  "row": {
                    "enum": [
                      0,
                      1
                    ],
                    "type": "integer",
                    "description": "Apple: auxiliary/secondary layout control (0 or 1)."
                  },
                  "label": {
                    "type": "string",
                    "description": "Human-readable label rendered above the value on the pass face."
                  },
                  "value": {
                    "oneOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      }
                    ],
                    "description": "Static value for the field. Number types are preserved for\nApple's `numberStyle` / `currencyCode` formatters. For dynamic\nvalues, omit `value` and set `dataKey` instead.\n"
                  },
                  "dataKey": {
                    "type": "string",
                    "description": "PassFast-specific: name of a key in the generate-pass request\nbody's `data` object whose value should populate this field.\n"
                  },
                  "dateStyle": {
                    "enum": [
                      "PKDateStyleNone",
                      "PKDateStyleShort",
                      "PKDateStyleMedium",
                      "PKDateStyleLong",
                      "PKDateStyleFull"
                    ],
                    "type": "string"
                  },
                  "semantics": {
                    "type": "object",
                    "description": "Apple: per-field semantic tags for Siri / Maps / Do-Not-Disturb integration.",
                    "additionalProperties": true
                  },
                  "timeStyle": {
                    "enum": [
                      "PKDateStyleNone",
                      "PKDateStyleShort",
                      "PKDateStyleMedium",
                      "PKDateStyleLong",
                      "PKDateStyleFull"
                    ],
                    "type": "string"
                  },
                  "isRelative": {
                    "type": "boolean",
                    "description": "Apple: whether the date is displayed relative to the current time."
                  },
                  "numberStyle": {
                    "enum": [
                      "PKNumberStyleDecimal",
                      "PKNumberStylePercent",
                      "PKNumberStyleScientific",
                      "PKNumberStyleSpellOut"
                    ],
                    "type": "string"
                  },
                  "currencyCode": {
                    "type": "string",
                    "description": "Apple: ISO 4217 currency code. Value is formatted as currency."
                  },
                  "changeMessage": {
                    "type": "string",
                    "description": "Apple: notification text when this field's value changes. Must contain `%@` placeholder for the new value."
                  },
                  "textAlignment": {
                    "enum": [
                      "PKTextAlignmentLeft",
                      "PKTextAlignmentCenter",
                      "PKTextAlignmentRight",
                      "PKTextAlignmentNatural"
                    ],
                    "type": "string"
                  },
                  "attributedValue": {
                    "type": "string",
                    "description": "Apple: HTML-flavored value (used for rendering links, etc.)."
                  },
                  "ignoresTimeZone": {
                    "type": "boolean",
                    "description": "Apple: whether to display the date in the pass's local time rather than the user's."
                  },
                  "dataDetectorTypes": {
                    "type": "array",
                    "items": {
                      "enum": [
                        "PKDataDetectorTypePhoneNumber",
                        "PKDataDetectorTypeLink",
                        "PKDataDetectorTypeAddress",
                        "PKDataDetectorTypeCalendarEvent"
                      ],
                      "type": "string"
                    },
                    "description": "Apple: back fields only. Limits which kinds of data are detected and linked."
                  }
                },
                "description": "A single field inside a pass. Used in `headerFields`, `primaryFields`,\n`secondaryFields`, `auxiliaryFields`, `backFields`, and\n`additionalInfoFields` (poster-style eventTicket only).\n"
              },
              "description": "Apple poster-style eventTicket only. Rendered inside the eventTicket object."
            },
            "loyaltyPointsDataKey": {
              "type": "string"
            },
            "footerBackgroundColor": {
              "type": "string"
            },
            "parkingInformationURL": {
              "type": "string",
              "format": "uri"
            },
            "transitInformationURL": {
              "type": "string",
              "format": "uri"
            },
            "viewUnlockRequirement": {
              "enum": [
                "UNLOCK_REQUIRED_TO_VIEW",
                "VIEW_UNLOCK_REQUIREMENT_UNSPECIFIED"
              ],
              "type": "string"
            },
            "contactVenuePhoneNumber": {
              "type": "string"
            },
            "smartTapRedemptionValue": {
              "type": "string"
            },
            "suppressHeaderDarkening": {
              "type": "boolean"
            },
            "ticketHolderNameDataKey": {
              "type": "string"
            },
            "directionsInformationURL": {
              "type": "string",
              "format": "uri"
            },
            "smartTapRedemptionDataKey": {
              "type": "string"
            },
            "associatedStoreIdentifiers": {
              "type": "array",
              "items": {
                "type": "integer"
              },
              "description": "Apple iTunes app IDs for 'Open in App'."
            },
            "secondaryLoyaltyPointsLabel": {
              "type": "string"
            },
            "localScheduledArrivalDateTime": {
              "type": "string",
              "description": "Google Flight: same format as departure."
            },
            "secondaryLoyaltyPointsDataKey": {
              "type": "string"
            },
            "localScheduledDepartureDateTime": {
              "type": "string",
              "description": "Google Flight: ISO 8601 **without** timezone offset (local airport time). Automatically stripped if a Z/offset is supplied."
            }
          },
          "description": "Complete pass structure. Drives both Apple `pass.json` emission and\nGoogle Wallet class/object JSON. Fields are grouped below by platform,\nbut the single JSONB object carries all of them for dual-wallet templates.\n",
          "additionalProperties": true
        },
        "pass_style": {
          "enum": [
            "boardingPass",
            "coupon",
            "eventTicket",
            "generic",
            "storeCard"
          ],
          "type": "string",
          "description": "Apple Wallet pass style."
        },
        "description": {
          "type": "string",
          "description": "Optional description of the template."
        },
        "field_schema": {
          "type": "object",
          "description": "Optional JSON schema for validating dynamic data.",
          "additionalProperties": true
        },
        "wallet_types": {
          "type": "array",
          "items": {
            "enum": [
              "apple",
              "google"
            ],
            "type": "string"
          },
          "default": [
            "apple"
          ]
        },
        "icon_image_id": {
          "type": "string",
          "format": "uuid"
        },
        "logo_image_id": {
          "type": "string",
          "format": "uuid"
        },
        "strip_image_id": {
          "type": "string",
          "format": "uuid"
        },
        "google_pass_type": {
          "enum": [
            "generic",
            "loyalty",
            "eventTicket",
            "offer",
            "flight",
            "transit",
            "giftCard"
          ],
          "type": "string",
          "description": "Google Wallet class type override. If unset, PassFast auto-maps from\nthe Apple `pass_style` (+ `structure.transitType` for boardingPass):\n- `generic` → generic\n- `storeCard` → loyalty (or giftCard via override)\n- `eventTicket` → eventTicket\n- `coupon` → offer\n- `boardingPass` + transitType PKTransitTypeAir → flight\n- `boardingPass` + transitType Train/Bus/Boat/Generic → transit\n"
        },
        "thumbnail_image_id": {
          "type": "string",
          "format": "uuid"
        },
        "background_image_id": {
          "type": "string",
          "format": "uuid"
        },
        "google_logo_image_id": {
          "type": "string",
          "format": "uuid"
        },
        "google_wide_logo_image_id": {
          "type": "string",
          "format": "uuid"
        }
      },
      "additionalProperties": false
    }
    arguments 1395 lines
  • revokeApiKey changes data unknown never probed

    Revoke an API key Revokes an API key, making it inactive. Revoked keys cannot authenticate. **Scope:** `org:manage` Maps to OpenAPI operationId `revokeApiKey` — PATCH /manage-keys/{id}. Same PassFast HTTP API, billing, and rate limits. Do not invent other paths.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid",
          "description": "API key ID."
        }
      },
      "additionalProperties": false
    }
    arguments 14 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id 46f22c64d295686e.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/46f22c64d295686e/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/46f22c64d295686e/badge.svg)](https://brick.blue/agent/46f22c64d295686e?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we know
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.