SMART Permission Tickets
0.1.0 - ci-build

SMART Permission Tickets, published by . This guide is not an authorized publication; it is the continuous build for version 0.1.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/jmandel/smart-permission-tickets-wip/ and changes regularly. See the Directory of published versions

Logical Model: Permission Ticket (JWT Payload)

Official URL: http://smarthealthit.org/ig/permission-tickets/StructureDefinition/PermissionTicket Version: 0.1.0
Draft as of 2026-03-06 Computable Name: PermissionTicket

Common core of a Permission Ticket. Includes the security envelope, shared authorization claims, and a typed details slot. Business-specific semantics are defined by ticket-type-specific schemas selected by ticket_type.

Usages:

  • This Logical Model is not used by any profiles in this Implementation Guide

You can also check for usages in the FHIR IG Statistics

Formal Views of Profile Content

Description of Profiles, Differentials, Snapshots and how the different presentations work.

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. PermissionTicket 0..* Base Permission Ticket (JWT Payload)
... iss 1..1 string Issuer (Trusted Issuer URL)
... sub 1..1 string Issuer-defined subject of the authorization grant (profile-specific). This value is issuer-local and SHALL NOT be relied on as a cross-party client identifier.
... aud 1..* uri Audience (recipient URL(s) or network / trust framework identifier)
... iat 0..1 integer Issued-At Timestamp
... jti 0..1 string Unique Ticket ID
... ticket_type 1..1 uri Ticket type URI identifying the ticket schema and processing rules
... cnf 0..1 BackboneElement Confirmation (RFC 7800). RECOMMENDED. Required by some ticket types (e.g., patient access, authorized representative, research). When present, Data Holders SHALL enforce key binding.
.... @id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... jkt 1..1 string JWK Thumbprint (RFC 7638) of the authorized client key
... revocation 0..1 BackboneElement Revocation Information
.... @id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... url 1..1 url URL of the Credential Revocation List (CRL)
.... rid 1..1 string Revocation Identifier (opaque, max 24 chars)
... authorization 1..1 BackboneElement Common Authorization Claims
.... @id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... subject 1..1 BackboneElement The Patient or Subject of the data
..... @id 0..1 string Local resource ID (type=reference)
..... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... type 1..1 code Subject resolution mode: match | identifier | reference
..... traits 0..1 Patient Demographic traits for matching (type=match)
..... resourceType 0..1 string Resource Type (e.g. Patient)
..... reference 0..1 string Local resource reference, e.g. Patient/123 (type=reference)
..... identifier 0..* Identifier Business Identifier (type=identifier)
.... access 1..1 BackboneElement Access Constraints
..... @id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... scopes 0..* string SMART Scopes (e.g. patient/Immunization.rs)
..... periods 0..* Period Time restrictions (Service Date)
..... jurisdictions 0..* Address Jurisdictional restrictions (state/country granularity)
..... organizations 0..* Organization Source organization restrictions (matching by identifier preferred)
.... requester 0..1 BackboneElement The Requesting Agent (optional)
..... @id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... resourceType 1..1 string Type of requester (Practitioner, PractitionerRole, RelatedPerson, Organization)
..... name 0..* HumanName Name of the requester
..... telecom 0..* ContactPoint Contact details
..... identifier 0..* Identifier Requester identifiers (NPI, etc)
..... relationship 0..* CodeableConcept Relationship to subject
..... type 0..* CodeableConcept Organization type
..... contained 0..* Resource Embedded resources
... details 0..1 BackboneElement Ticket-type-specific claims. Schema is defined by the ticket_type URI. Absent when the ticket type has no business-specific fields beyond the common authorization claims.

doco Documentation for this format

Constraints

Id Grade Path(s) Description Expression
ele-1 error **ALL** elements All FHIR elements must have a @value or children hasValue() or (children().count() > id.count())
ext-1 error **ALL** extensions Must have either extensions or value[x], not both extension.exists() != value.exists()

This structure is derived from Base

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. PermissionTicket 0..* Base Permission Ticket (JWT Payload)
... iss 1..1 string Issuer (Trusted Issuer URL)
... sub 1..1 string Issuer-defined subject of the authorization grant (profile-specific). This value is issuer-local and SHALL NOT be relied on as a cross-party client identifier.
... aud 1..* uri Audience (recipient URL(s) or network / trust framework identifier)
... iat 0..1 integer Issued-At Timestamp
... jti 0..1 string Unique Ticket ID
... ticket_type 1..1 uri Ticket type URI identifying the ticket schema and processing rules
... cnf 0..1 BackboneElement Confirmation (RFC 7800). RECOMMENDED. Required by some ticket types (e.g., patient access, authorized representative, research). When present, Data Holders SHALL enforce key binding.
.... jkt 1..1 string JWK Thumbprint (RFC 7638) of the authorized client key
... revocation 0..1 BackboneElement Revocation Information
.... url 1..1 url URL of the Credential Revocation List (CRL)
.... rid 1..1 string Revocation Identifier (opaque, max 24 chars)
... authorization 1..1 BackboneElement Common Authorization Claims
.... subject 1..1 BackboneElement The Patient or Subject of the data
..... type 1..1 code Subject resolution mode: match | identifier | reference
..... traits 0..1 Patient Demographic traits for matching (type=match)
..... resourceType 0..1 string Resource Type (e.g. Patient)
..... @id 0..1 string Local resource ID (type=reference)
..... reference 0..1 string Local resource reference, e.g. Patient/123 (type=reference)
..... identifier 0..* Identifier Business Identifier (type=identifier)
.... access 1..1 BackboneElement Access Constraints
..... scopes 0..* string SMART Scopes (e.g. patient/Immunization.rs)
..... periods 0..* Period Time restrictions (Service Date)
..... jurisdictions 0..* Address Jurisdictional restrictions (state/country granularity)
..... organizations 0..* Organization Source organization restrictions (matching by identifier preferred)
.... requester 0..1 BackboneElement The Requesting Agent (optional)
..... resourceType 1..1 string Type of requester (Practitioner, PractitionerRole, RelatedPerson, Organization)
..... name 0..* HumanName Name of the requester
..... telecom 0..* ContactPoint Contact details
..... identifier 0..* Identifier Requester identifiers (NPI, etc)
..... relationship 0..* CodeableConcept Relationship to subject
..... type 0..* CodeableConcept Organization type
..... contained 0..* Resource Embedded resources
... details 0..1 BackboneElement Ticket-type-specific claims. Schema is defined by the ticket_type URI. Absent when the ticket type has no business-specific fields beyond the common authorization claims.

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. PermissionTicket 0..* Base Permission Ticket (JWT Payload)
... iss 1..1 string Issuer (Trusted Issuer URL)
... sub 1..1 string Issuer-defined subject of the authorization grant (profile-specific). This value is issuer-local and SHALL NOT be relied on as a cross-party client identifier.
... aud 1..* uri Audience (recipient URL(s) or network / trust framework identifier)
... iat 0..1 integer Issued-At Timestamp
... jti 0..1 string Unique Ticket ID
... ticket_type 1..1 uri Ticket type URI identifying the ticket schema and processing rules
... cnf 0..1 BackboneElement Confirmation (RFC 7800). RECOMMENDED. Required by some ticket types (e.g., patient access, authorized representative, research). When present, Data Holders SHALL enforce key binding.
.... @id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... jkt 1..1 string JWK Thumbprint (RFC 7638) of the authorized client key
... revocation 0..1 BackboneElement Revocation Information
.... @id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... url 1..1 url URL of the Credential Revocation List (CRL)
.... rid 1..1 string Revocation Identifier (opaque, max 24 chars)
... authorization 1..1 BackboneElement Common Authorization Claims
.... @id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... subject 1..1 BackboneElement The Patient or Subject of the data
..... @id 0..1 string Local resource ID (type=reference)
..... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... type 1..1 code Subject resolution mode: match | identifier | reference
..... traits 0..1 Patient Demographic traits for matching (type=match)
..... resourceType 0..1 string Resource Type (e.g. Patient)
..... reference 0..1 string Local resource reference, e.g. Patient/123 (type=reference)
..... identifier 0..* Identifier Business Identifier (type=identifier)
.... access 1..1 BackboneElement Access Constraints
..... @id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... scopes 0..* string SMART Scopes (e.g. patient/Immunization.rs)
..... periods 0..* Period Time restrictions (Service Date)
..... jurisdictions 0..* Address Jurisdictional restrictions (state/country granularity)
..... organizations 0..* Organization Source organization restrictions (matching by identifier preferred)
.... requester 0..1 BackboneElement The Requesting Agent (optional)
..... @id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... resourceType 1..1 string Type of requester (Practitioner, PractitionerRole, RelatedPerson, Organization)
..... name 0..* HumanName Name of the requester
..... telecom 0..* ContactPoint Contact details
..... identifier 0..* Identifier Requester identifiers (NPI, etc)
..... relationship 0..* CodeableConcept Relationship to subject
..... type 0..* CodeableConcept Organization type
..... contained 0..* Resource Embedded resources
... details 0..1 BackboneElement Ticket-type-specific claims. Schema is defined by the ticket_type URI. Absent when the ticket type has no business-specific fields beyond the common authorization claims.

doco Documentation for this format

Constraints

Id Grade Path(s) Description Expression
ele-1 error **ALL** elements All FHIR elements must have a @value or children hasValue() or (children().count() > id.count())
ext-1 error **ALL** extensions Must have either extensions or value[x], not both extension.exists() != value.exists()

This structure is derived from Base

Summary

Mandatory: 0 element(13 nested mandatory elements)

Key Elements View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. PermissionTicket 0..* Base Permission Ticket (JWT Payload)
... iss 1..1 string Issuer (Trusted Issuer URL)
... sub 1..1 string Issuer-defined subject of the authorization grant (profile-specific). This value is issuer-local and SHALL NOT be relied on as a cross-party client identifier.
... aud 1..* uri Audience (recipient URL(s) or network / trust framework identifier)
... iat 0..1 integer Issued-At Timestamp
... jti 0..1 string Unique Ticket ID
... ticket_type 1..1 uri Ticket type URI identifying the ticket schema and processing rules
... cnf 0..1 BackboneElement Confirmation (RFC 7800). RECOMMENDED. Required by some ticket types (e.g., patient access, authorized representative, research). When present, Data Holders SHALL enforce key binding.
.... @id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... jkt 1..1 string JWK Thumbprint (RFC 7638) of the authorized client key
... revocation 0..1 BackboneElement Revocation Information
.... @id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... url 1..1 url URL of the Credential Revocation List (CRL)
.... rid 1..1 string Revocation Identifier (opaque, max 24 chars)
... authorization 1..1 BackboneElement Common Authorization Claims
.... @id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... subject 1..1 BackboneElement The Patient or Subject of the data
..... @id 0..1 string Local resource ID (type=reference)
..... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... type 1..1 code Subject resolution mode: match | identifier | reference
..... traits 0..1 Patient Demographic traits for matching (type=match)
..... resourceType 0..1 string Resource Type (e.g. Patient)
..... reference 0..1 string Local resource reference, e.g. Patient/123 (type=reference)
..... identifier 0..* Identifier Business Identifier (type=identifier)
.... access 1..1 BackboneElement Access Constraints
..... @id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... scopes 0..* string SMART Scopes (e.g. patient/Immunization.rs)
..... periods 0..* Period Time restrictions (Service Date)
..... jurisdictions 0..* Address Jurisdictional restrictions (state/country granularity)
..... organizations 0..* Organization Source organization restrictions (matching by identifier preferred)
.... requester 0..1 BackboneElement The Requesting Agent (optional)
..... @id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... resourceType 1..1 string Type of requester (Practitioner, PractitionerRole, RelatedPerson, Organization)
..... name 0..* HumanName Name of the requester
..... telecom 0..* ContactPoint Contact details
..... identifier 0..* Identifier Requester identifiers (NPI, etc)
..... relationship 0..* CodeableConcept Relationship to subject
..... type 0..* CodeableConcept Organization type
..... contained 0..* Resource Embedded resources
... details 0..1 BackboneElement Ticket-type-specific claims. Schema is defined by the ticket_type URI. Absent when the ticket type has no business-specific fields beyond the common authorization claims.

doco Documentation for this format

Constraints

Id Grade Path(s) Description Expression
ele-1 error **ALL** elements All FHIR elements must have a @value or children hasValue() or (children().count() > id.count())
ext-1 error **ALL** extensions Must have either extensions or value[x], not both extension.exists() != value.exists()

Differential View

This structure is derived from Base

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. PermissionTicket 0..* Base Permission Ticket (JWT Payload)
... iss 1..1 string Issuer (Trusted Issuer URL)
... sub 1..1 string Issuer-defined subject of the authorization grant (profile-specific). This value is issuer-local and SHALL NOT be relied on as a cross-party client identifier.
... aud 1..* uri Audience (recipient URL(s) or network / trust framework identifier)
... iat 0..1 integer Issued-At Timestamp
... jti 0..1 string Unique Ticket ID
... ticket_type 1..1 uri Ticket type URI identifying the ticket schema and processing rules
... cnf 0..1 BackboneElement Confirmation (RFC 7800). RECOMMENDED. Required by some ticket types (e.g., patient access, authorized representative, research). When present, Data Holders SHALL enforce key binding.
.... jkt 1..1 string JWK Thumbprint (RFC 7638) of the authorized client key
... revocation 0..1 BackboneElement Revocation Information
.... url 1..1 url URL of the Credential Revocation List (CRL)
.... rid 1..1 string Revocation Identifier (opaque, max 24 chars)
... authorization 1..1 BackboneElement Common Authorization Claims
.... subject 1..1 BackboneElement The Patient or Subject of the data
..... type 1..1 code Subject resolution mode: match | identifier | reference
..... traits 0..1 Patient Demographic traits for matching (type=match)
..... resourceType 0..1 string Resource Type (e.g. Patient)
..... @id 0..1 string Local resource ID (type=reference)
..... reference 0..1 string Local resource reference, e.g. Patient/123 (type=reference)
..... identifier 0..* Identifier Business Identifier (type=identifier)
.... access 1..1 BackboneElement Access Constraints
..... scopes 0..* string SMART Scopes (e.g. patient/Immunization.rs)
..... periods 0..* Period Time restrictions (Service Date)
..... jurisdictions 0..* Address Jurisdictional restrictions (state/country granularity)
..... organizations 0..* Organization Source organization restrictions (matching by identifier preferred)
.... requester 0..1 BackboneElement The Requesting Agent (optional)
..... resourceType 1..1 string Type of requester (Practitioner, PractitionerRole, RelatedPerson, Organization)
..... name 0..* HumanName Name of the requester
..... telecom 0..* ContactPoint Contact details
..... identifier 0..* Identifier Requester identifiers (NPI, etc)
..... relationship 0..* CodeableConcept Relationship to subject
..... type 0..* CodeableConcept Organization type
..... contained 0..* Resource Embedded resources
... details 0..1 BackboneElement Ticket-type-specific claims. Schema is defined by the ticket_type URI. Absent when the ticket type has no business-specific fields beyond the common authorization claims.

doco Documentation for this format

Snapshot View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. PermissionTicket 0..* Base Permission Ticket (JWT Payload)
... iss 1..1 string Issuer (Trusted Issuer URL)
... sub 1..1 string Issuer-defined subject of the authorization grant (profile-specific). This value is issuer-local and SHALL NOT be relied on as a cross-party client identifier.
... aud 1..* uri Audience (recipient URL(s) or network / trust framework identifier)
... iat 0..1 integer Issued-At Timestamp
... jti 0..1 string Unique Ticket ID
... ticket_type 1..1 uri Ticket type URI identifying the ticket schema and processing rules
... cnf 0..1 BackboneElement Confirmation (RFC 7800). RECOMMENDED. Required by some ticket types (e.g., patient access, authorized representative, research). When present, Data Holders SHALL enforce key binding.
.... @id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... jkt 1..1 string JWK Thumbprint (RFC 7638) of the authorized client key
... revocation 0..1 BackboneElement Revocation Information
.... @id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... url 1..1 url URL of the Credential Revocation List (CRL)
.... rid 1..1 string Revocation Identifier (opaque, max 24 chars)
... authorization 1..1 BackboneElement Common Authorization Claims
.... @id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... subject 1..1 BackboneElement The Patient or Subject of the data
..... @id 0..1 string Local resource ID (type=reference)
..... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... type 1..1 code Subject resolution mode: match | identifier | reference
..... traits 0..1 Patient Demographic traits for matching (type=match)
..... resourceType 0..1 string Resource Type (e.g. Patient)
..... reference 0..1 string Local resource reference, e.g. Patient/123 (type=reference)
..... identifier 0..* Identifier Business Identifier (type=identifier)
.... access 1..1 BackboneElement Access Constraints
..... @id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... scopes 0..* string SMART Scopes (e.g. patient/Immunization.rs)
..... periods 0..* Period Time restrictions (Service Date)
..... jurisdictions 0..* Address Jurisdictional restrictions (state/country granularity)
..... organizations 0..* Organization Source organization restrictions (matching by identifier preferred)
.... requester 0..1 BackboneElement The Requesting Agent (optional)
..... @id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... resourceType 1..1 string Type of requester (Practitioner, PractitionerRole, RelatedPerson, Organization)
..... name 0..* HumanName Name of the requester
..... telecom 0..* ContactPoint Contact details
..... identifier 0..* Identifier Requester identifiers (NPI, etc)
..... relationship 0..* CodeableConcept Relationship to subject
..... type 0..* CodeableConcept Organization type
..... contained 0..* Resource Embedded resources
... details 0..1 BackboneElement Ticket-type-specific claims. Schema is defined by the ticket_type URI. Absent when the ticket type has no business-specific fields beyond the common authorization claims.

doco Documentation for this format

Constraints

Id Grade Path(s) Description Expression
ele-1 error **ALL** elements All FHIR elements must have a @value or children hasValue() or (children().count() > id.count())
ext-1 error **ALL** extensions Must have either extensions or value[x], not both extension.exists() != value.exists()

This structure is derived from Base

Summary

Mandatory: 0 element(13 nested mandatory elements)

 

Other representations of profile: CSV, Excel