Skip to content

Passes

Pass template is a set of settings that defines how passes look like, behave, and what data they display

Index

Get all pass templates

Fetches paged list of all issuer’s pass templates

Request
GET https://smartpages-api.smartsolutions.is/api/v1/pass-template
Query parameters:
  • page ‐ Page number, 0-indexed (optional), default value: 0
  • page_size ‐ Page size (optional), default value: 20
Response
Example
{ "page": 0, "pageSize": 100, "totalPages": 1, "totalItems": 1, "data": [ { "id": "414dd4f5-758c-4366-9624-627151cf01ff", "type": "TICKET", "name": "Movie ticket", "description": "Lets you enjoy the movie at cinema", "stamps": null, "status": "ACTIVE", "inputFields": [ { "label": "e-mail", "identifier": "email", "description": "Holders email address", "isMandatory": true, "isUnique": false, "format": "EMAIL", "type": "MEMBER" } ], "isSharingProhibited": false, "isNFC": true, "singleDeviceOnly": true, "firstDeviceOnly": true, "oneDeviceAtATime": true, "oncePerDevice": true, "onePassOfTemplateTypePerDevice": false, "posDistributionOnly": false, "passPrice": 1000, "whenLastUpdateSent": "2025-12-22T23:57:11Z", "allowReward": false, "hasDynamicBarcode": false, "dynamicBarcodeExpirationTimeSeconds": null, "dynamicBarcodeType": "BASIC", "lockInputFields": false, "disableIssue": false, "deliverByKennitala": false, "locations": [ { "relevantText": "Welcome to cinema", "point": { "latitude": 64.112817, "longitude": -21.935192 }, "name": "Movie theater #1" } ], "useEmailDomainVerification": false, "allowedEmailDomains": [], "kennitalaAgeVerification": null, "supportsGoogleWallet": true, "exchangedForTemplateId": null, "deliveryPageUrl": "https://smartpages.smartsolutions.is/distribution/passTemplate/414dd4f5-758c-4366-9624-627151cf01ff/414dd4f5-758c-4366-9624-627151cf01ff" } ] }
Fields details
page number
Page index (0-based)
pageSize number
Amount of entries per page
totalPages number
Total pages
totalItems number
Total entries
data array
Payload
id UUID
Pass template ID
type string
Pass template type. Possible values:
ID
COUPON
MEMBER
TICKET
PUNCH
GIFT
MULTI_TICKET
STORAGE
APPOINTMENT_PASS
name string Optional
Name of the pass template
stamps number Optional
Amount of stamps (for PUNCH or MULTI_TICKET)
status string
Status of the pass template. Possible values: ACTIVE, VOIDED
inputFields array
Configured pass input fields
label string
Label to display above text input on delivery page
identifier string
Human-readable input field identifier
description string Optional
Input field purpose description
isMandatory boolean
Says if input value is required
isUnique boolean
Says if input field is marked as unique
format string
Input value format. Possible values:
"TEXT" - arbitrary string
"NUMBER" - integer
"DATE" - date
"EMAIL" - email address
"URL" - URL
"KENNITALA" - kennitala ID
"PHONE_NUMBER" - phone number
type string
Who enters the input value:
ISSUER - issuer
MEMBER - end-user (pass holder)
isSharingProhibited boolean
isNFC boolean
singleDeviceOnly boolean
firstDeviceOnly boolean
oneDeviceAtATime boolean
oncePerDevice boolean
onePassOfTemplateTypePerDevice boolean
posDistributionOnly boolean
passPrice number Optional
Price of the pass in ISK (for sold passes)
whenLastUpdateSent string Optional
not used currently
allowReward boolean
hasDynamicBarcode boolean
Dynamic barcode enabled/disabled
dynamicBarcodeExpirationTimeSeconds number Optional
Applicable if hasDynamicBarcode = true
dynamicBarcodeType string
Possible values: BASIC, INCLUDE_TEMPLATE_ID
lockInputFields boolean
When true, editing input values on passes is disabled
disableIssue boolean
When true, creating new passes from this template is disabled
deliverByKennitala boolean
When true, delivering passes by kennitala input is enabled
locations array
List of locations relevant to passes of this template (for Apple devices)
relevantText string
Text to display when pass holder is near location
name string Optional
Internal name of the location. Accessible to issuer only
point object
Coordinates
latitude number
longitude number
useEmailDomainVerification boolean
When true, email domain verification is enabled
allowedEmailDomains array
Applicable when useEmailDomainVerification = true
sortOrder number
emailDomain string
The email domain string (e.g., "example.com")
kennitalaAgeVerification number Optional
Minimum age for pass delivery by Kennitala
supportsGoogleWallet boolean
exchangedForTemplateId UUID Optional
Not used currently
deliveryPageUrl string
URL of the page where new pass can be obtained (if pass template configuration allows that)
Code example
const myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
myHeaders.append("Authorization", "Bearer <base64(KEY_ID:KEY_TOKEN)>");
const requestOptions = {
method: "GET",
headers: myHeaders,
redirect: "follow"
};
try {
const response = await fetch("https://smartpages-api.smartsolutions.is/api/v1/pass-template", requestOptions);
const result = await response.text();
console.log(result)
} catch (error) {
console.error(error);
};

Get pass template by id

Request
GET https://smartpages-api.smartsolutions.is/api/v1/pass-template/{id}
Response
Example
{ "id": "414dd4f5-758c-4366-9624-627151cf01ff", "type": "TICKET", "name": "Movie ticket", "description": "Lets you enjoy the movie at cinema", "stamps": null, "status": "ACTIVE", "inputFields": [ { "label": "e-mail", "identifier": "email", "description": "Holders email address", "isMandatory": true, "isUnique": false, "format": "EMAIL", "type": "MEMBER" } ], "isSharingProhibited": false, "isNFC": true, "singleDeviceOnly": true, "firstDeviceOnly": true, "oneDeviceAtATime": true, "oncePerDevice": true, "onePassOfTemplateTypePerDevice": false, "posDistributionOnly": false, "passPrice": 1000, "whenLastUpdateSent": "2025-12-22T23:57:11Z", "allowReward": false, "hasDynamicBarcode": false, "dynamicBarcodeExpirationTimeSeconds": null, "dynamicBarcodeType": "BASIC", "lockInputFields": false, "disableIssue": false, "deliverByKennitala": false, "locations": [ { "relevantText": "Welcome to cinema", "point": { "latitude": 64.112817, "longitude": -21.935192 }, "name": "Movie theater #1" } ], "useEmailDomainVerification": false, "allowedEmailDomains": [], "kennitalaAgeVerification": null, "supportsGoogleWallet": true, "exchangedForTemplateId": null, "deliveryPageUrl": "https://smartpages.smartsolutions.is/distribution/passTemplate/414dd4f5-758c-4366-9624-627151cf01ff/414dd4f5-758c-4366-9624-627151cf01ff" }
Fields details
id UUID
Pass template ID
type string
Pass template type. Possible values:
ID
COUPON
MEMBER
TICKET
PUNCH
GIFT
MULTI_TICKET
STORAGE
APPOINTMENT_PASS
name string Optional
Name of the pass template
stamps number Optional
Amount of stamps (for PUNCH or MULTI_TICKET)
status string
Status of the pass template. Possible values: ACTIVE, VOIDED
inputFields array
Configured pass input fields
label string
Label to display above text input on delivery page
identifier string
Human-readable input field identifier
description string Optional
Input field purpose description
isMandatory boolean
Says if input value is required
isUnique boolean
Says if input field is marked as unique
format string
Input value format. Possible values:
"TEXT" - arbitrary string
"NUMBER" - integer
"DATE" - date
"EMAIL" - email address
"URL" - URL
"KENNITALA" - kennitala ID
"PHONE_NUMBER" - phone number
type string
Who enters the input value:
ISSUER - issuer
MEMBER - end-user (pass holder)
isSharingProhibited boolean
isNFC boolean
singleDeviceOnly boolean
firstDeviceOnly boolean
oneDeviceAtATime boolean
oncePerDevice boolean
onePassOfTemplateTypePerDevice boolean
posDistributionOnly boolean
passPrice number Optional
Price of the pass in ISK (for sold passes)
whenLastUpdateSent string Optional
not used currently
allowReward boolean
hasDynamicBarcode boolean
Dynamic barcode enabled/disabled
dynamicBarcodeExpirationTimeSeconds number Optional
Applicable if hasDynamicBarcode = true
dynamicBarcodeType string
Possible values: BASIC, INCLUDE_TEMPLATE_ID
lockInputFields boolean
When true, editing input values on passes is disabled
disableIssue boolean
When true, creating new passes from this template is disabled
deliverByKennitala boolean
When true, delivering passes by kennitala input is enabled
locations array
List of locations relevant to passes of this template (for Apple devices)
relevantText string
Text to display when pass holder is near location
name string Optional
Internal name of the location. Accessible to issuer only
point object
Coordinates
latitude number
longitude number
useEmailDomainVerification boolean
When true, email domain verification is enabled
allowedEmailDomains array
Applicable when useEmailDomainVerification = true
sortOrder number
emailDomain string
The email domain string (e.g., "example.com")
kennitalaAgeVerification number Optional
Minimum age for pass delivery by Kennitala
supportsGoogleWallet boolean
exchangedForTemplateId UUID Optional
Not used currently
deliveryPageUrl string
URL of the page where new pass can be obtained (if pass template configuration allows that)
Code example
const myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
myHeaders.append("Authorization", "Bearer <base64(KEY_ID:KEY_TOKEN)>");
const requestOptions = {
method: "GET",
headers: myHeaders,
redirect: "follow"
};
try {
const response = await fetch("https://smartpages-api.smartsolutions.is/api/v1/pass-template/{id}", requestOptions);
const result = await response.text();
console.log(result)
} catch (error) {
console.error(error);
};