This
page
is
part
of
the
FHIR
Specification
v6.0.0-ballot3:
Release
6
Ballot
(3rd
Draft)
(see
Ballot
Notes
).
The
current
version
is
5.0.0
.
For
a
full
list
Continuous
Integration
Build
of
available
versions,
see
FHIR
(will
be
incorrect/inconsistent
at
times).
See
the
Directory
of
published
versions
Responsible
Owner:
FHIR
Infrastructure
Work
Group
|
|
Security Category : Business | Compartments : No defined compartments |
The subscription resource describes a particular client's request to be notified about a SubscriptionTopic.
This
document
contains
information
about
the
Subscription
resource
and
details
specific
to
options
in
it.
See
Subscriptions
for
general
information
about
using
Subscriptions
in
FHIR.
The
Subscription
resource
is
used
to
establish
proactive
event
notifications
from
a
FHIR
server
to
another
system.
Notifications
are
triggered
by
state
changes
or
events
defined
by
a
SubscriptionTopic
that
the
server
supports,
referenced
by
a
canonical
URL.
Notifications
can
be
further
refined
by
supplying
filters
specific
to
an
individual
client.
Each
SubscriptionTopic
resource
defines
a
set
of
allowed
filters
(
),
which
can
be
SubscriptionTopic.canFilterBy
SubscriptionTopic.trigger.canFilterBy
referred
to
within
used
by
a
Subscription
resource
(
Subscription.filterBy
).
)
to
restrict
the
set
of
notifications
generated
by
a
SubscriptionTopic
for
that
Subscription.
Once
a
subscription
is
created,
any
triggering
state
change
or
event
covered
by
the
specified
SubscriptionTopic
that
meets
the
filtering
criteria
will
cause
a
notification
to
be
sent
using
the
provided
channel.
Notifications
are
Bundle
resources,
of
type
subscription-notification
.
Subscriptions
Subscription
resources
do
not
represent
concrete
physical
objects;
they
are
active
resources;
representations
of
a
state
of
the
server.
Changes
from
clients
(e.g.,
requesting
a
new
Subscription,
changing
configuration,
etc.)
are
interpreted
as
requests
to
a
server.
The
server
can
SHOULD
only
accept
a
subscription
if
requests
it
expects
to
honor.
A
server
will
execute
only
activate
Subscriptions
(set
the
specified
channel
for
any
resources
subsequently
received.
status
to
active
and
send
notifications)
if
it
supports
the
requested
SubscriptionTopic
,
channel,
payload,
etc..
The
subscription
is
no
longer
not
active
once
it
when
the
Subscription.status
field
is
not
set
to
active
or
when
the
Subscription
is
deleted
from
the
server.
Using
the
Subscription.content
,
subscriptions
can
be
configured
to
send
notifications
that
include
full
resource
content,
just
the
ID
of
the
triggering
resource,
or
an
empty
notification
body.
Several channels are defined in the core specification:
Subscription.endpoint
URL
(e.g.,
https://...
)
Subscription.endpoint
email
URI
(e.g.,
mailto:...
)
Subscription.endpoint
URI
Additional channel types can be defined by external implementation guides. See below for further discussion of the various channels.
The
Subscription
resource
is
used
in
the
Subscriptions
Framework
.
Information
about
the
Boundaries
and
Relationships
both
within
the
Subscriptions
Framework
and
to
other
areas
of
the
FHIR
specification
can
be
found
here
.
Structure
| Name | Flags | Card. | Type |
Description
&
Constraints
Filter:
|
||||
|---|---|---|---|---|---|---|---|---|
|
|
DomainResource |
Information
about
a
request
for
notifications
to
a
client
based
on
a
SubscriptionTopic
Elements defined in Ancestors: id , meta , implicitRules , language , text , contained , extension , modifierExtension |
|||||
|
Σ | 0..* | Identifier |
Additional
identifiers
(business
identifier)
|
||||
|
Σ | 0..1 | string |
Human
readable
name
for
this
subscription
|
||||
|
?! Σ | 1..1 | code |
requested
|
active
|
error
|
off
|
entered-in-error
Binding: Subscription Status ( Required ) |
||||
|
Σ | 1..1 | canonical ( SubscriptionTopic ) |
Reference
to
the
subscription
topic
being
subscribed
to
|
||||
|
Σ | 0..* | ContactPoint |
Contact
details
for
source
(e.g.
troubleshooting)
|
||||
|
Σ | 0..1 | instant |
When
to
automatically
delete
the
subscription
|
||||
|
Σ | 0..1 | Reference ( CareTeam | Device | Group | HealthcareService | Organization | RelatedPerson | Patient | Practitioner | PractitionerRole ) |
Entity
responsible
for
Subscription
changes
|
||||
|
Σ | 0..1 | string |
Description
of
why
this
subscription
was
created
|
||||
|
Σ C | 0..* | BackboneElement |
Criteria
for
narrowing
the
subscription
topic
stream
+ Rule: Subscription filters may only contain a modifier or a comparator |
||||
|
Σ | 0..1 | uri |
Allowed
Resource
(reference
to
definition)
for
this
Subscription
filter
Binding: Types used with Subscriptions ( Extensible )
|
||||
|
Σ | 1..1 | string |
Filter
label
defined
in
SubscriptionTopic
|
||||
|
C | 0..1 | code |
eq
|
ne
|
gt
|
lt
|
ge
|
le
|
sa
|
eb
|
ap
Binding: Search Comparator ( Required ) |
||||
|
C | 0..1 | code |
missing
|
exact
|
contains
|
not
|
text
|
in
|
not-in
|
below
|
above
|
type
|
identifier
|
of-type
|
code-text
|
text-advanced
|
iterate
Binding: Search Modifier Code ( Required ) |
||||
|
Σ | 1..1 | string |
Literal
value
or
resource
path
|
||||
|
Σ | 0..* | CodeableConcept |
Event
to
filter
by
Binding: hl7VS-eventTypeCode
(
Example
)
|
||||
|
Σ | 1..1 | Coding |
Channel
type
for
notifications
Binding: Subscription Channel Type ( Extensible ) |
||||
|
Σ | 0..1 | url |
URL
where
the
channel
|
||||
|
0..* | BackboneElement |
Channel
type
dependent
information
|
|||||
|
1..1 | string |
Name
(key)
of
the
parameter
|
|||||
|
1..1 | string |
Value
of
the
parameter
to
use
or
pass
through
|
|||||
|
Σ | 0..1 | unsignedInt |
Interval
in
seconds
to
send
'heartbeat'
notification
|
||||
|
Σ | 0..1 | unsignedInt |
Timeout
in
seconds
to
attempt
notification
delivery
|
||||
|
Σ | 0..1 | code |
MIME
type
to
send,
or
omit
for
no
payload
Binding: Mime Types ( Required ) |
||||
|
Σ | 0..1 | code |
empty
|
id-only
|
full-resource
Binding: Subscription Payload Content ( Required ) |
||||
|
Σ | 0..1 | positiveInt |
Maximum
number
of
events
that
can
be
combined
in
a
single
notification
|
||||
Documentation
for
this
format
|
||||||||
See the Extensions for this resource
UML Diagram ( Legend )
XML Template
<Subscription xmlns="http://hl7.org/fhir"><!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension --> <identifier><!-- 0..* Identifier Additional identifiers (business identifier) --></identifier> <name value="[string]"/><!-- 0..1 Human readable name for this subscription --> <status value="[code]"/><!-- 1..1 requested | active | error | off | entered-in-error --> <topic><!-- 1..1 canonical(SubscriptionTopic) Reference to the subscription topic being subscribed to --></topic> <contact><!-- 0..* ContactPoint Contact details for source (e.g. troubleshooting) --></contact> <end value="[instant]"/><!-- 0..1 When to automatically delete the subscription -->
<| </managingEntity><managingEntity><!-- 0..1 Reference(CareTeam|Device|Group|HealthcareService| Organization|Patient|Practitioner|PractitionerRole|RelatedPerson) Entity responsible for Subscription changes --></managingEntity> <reason value="[string]"/><!-- 0..1 Description of why this subscription was created --> <filterBy> <!-- 0..* Criteria for narrowing the subscription topic stream --> <resource value="[uri]"/><!-- 0..1 Allowed Resource (reference to definition) for this Subscription filter --> <filterParameter value="[string]"/><!-- 1..1 Filter label defined in SubscriptionTopic --> <comparator value="[code]"/><!-- I 0..1 eq | ne | gt | lt | ge | le | sa | eb | ap --> <modifier value="[code]"/><!-- I 0..1 missing | exact | contains | not | text | in | not-in | below | above | type | identifier | of-type | code-text | text-advanced | iterate --> <value value="[string]"/><!-- 1..1 Literal value or resource path --><</event><event><!-- 0..* CodeableConcept Event to filter by--></event> </filterBy> <channelType><!-- 1..1 Coding Channel type for notifications --></channelType>
<<endpoint value="[url]"/><!-- 0..1 URL where the channel sends notifications --> <parameter> <!-- 0..* Channel type dependent information --> <name value="[string]"/><!-- 1..1 Name (key) of the parameter --> <value value="[string]"/><!-- 1..1 Value of the parameter to use or pass through --> </parameter> <heartbeatPeriod value="[unsignedInt]"/><!-- 0..1 Interval in seconds to send 'heartbeat' notification --> <timeout value="[unsignedInt]"/><!-- 0..1 Timeout in seconds to attempt notification delivery --><<a href="subscription-definitions.html#Subscription.contentType" title="The MIME type to send the payload in - e.g., `application/fhir+xml` or `application/fhir+json`. Note that: * clients may request notifications in a specific FHIR version by using the [FHIR Version Parameter](http.html#version-parameter) - e.g., `application/fhir+json; fhirVersion=4.0`.<contentType value="[code]"/><!-- 0..1 MIME type to send, or omit for no payload --><<content value="[code]"/><!-- 0..1 empty | id-only | full-resource --> <maxCount value="[positiveInt]"/><!-- 0..1 Maximum number of events that can be combined in a single notification --> </Subscription>
JSON Template
{
"resourceType" : "Subscription",
// from Resource: id, meta, implicitRules, and language
// from DomainResource: text, contained, extension, and modifierExtension
"identifier" : [{ Identifier }], // Additional identifiers (business identifier)
"name" : "<string>", // Human readable name for this subscription
"status" : "<code>", // R! requested | active | error | off | entered-in-error
"topic" : "<canonical(SubscriptionTopic)>", // R! Reference to the subscription topic being subscribed to
"contact" : [{ ContactPoint }], // Contact details for source (e.g. troubleshooting)
"end" : "<instant>", // When to automatically delete the subscription
"|
"managingEntity" : { Reference(CareTeam|Device|Group|HealthcareService|
Organization|Patient|Practitioner|PractitionerRole|RelatedPerson) }, // Entity responsible for Subscription changes
"reason" : "<string>", // Description of why this subscription was created
"filterBy" : [{ // Criteria for narrowing the subscription topic stream
"resource" : "<uri>", // Allowed Resource (reference to definition) for this Subscription filter
"filterParameter" : "<string>", // R! Filter label defined in SubscriptionTopic
"comparator" : "<code>", // I eq | ne | gt | lt | ge | le | sa | eb | ap
"modifier" : "<code>", // I missing | exact | contains | not | text | in | not-in | below | above | type | identifier | of-type | code-text | text-advanced | iterate
"value" : "<string>", // R! Literal value or resource path
"
"event" : [{ CodeableConcept }] // Event to filter by
}],
"channelType" : { Coding }, // R! Channel type for notifications
"
"endpoint" : "<url>", // URL where the channel sends notifications
"parameter" : [{ // Channel type dependent information
"name" : "<string>", // R! Name (key) of the parameter
"value" : "<string>" // R! Value of the parameter to use or pass through
}],
"heartbeatPeriod" : "<unsignedInt>", // Interval in seconds to send 'heartbeat' notification
"timeout" : "<unsignedInt>", // Timeout in seconds to attempt notification delivery
"<a href="subscription-definitions.html#Subscription.contentType" title="The MIME type to send the payload in - e.g., `application/fhir+xml` or `application/fhir+json`. Note that:
* clients may request notifications in a specific FHIR version by using the [FHIR Version Parameter](http.html#version-parameter) - e.g., `application/fhir+json; fhirVersion=4.0`.
"contentType" : "<code>", // MIME type to send, or omit for no payload
"
"content" : "<code>", // empty | id-only | full-resource
"maxCount" : "<positiveInt>" // Maximum number of events that can be combined in a single notification
}
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> .[ a fhir:Subscription; fhir:nodeRole fhir:treeRoot; # if this is the parser root
# from # from# from Resource: fhir:id, fhir:meta, fhir:implicitRules, and fhir:language # from DomainResource: fhir:text, fhir:contained, fhir:extension, and fhir:modifierExtension fhir:identifier ( [ Identifier ] ... ) ; # 0..* Additional identifiers (business identifier) fhir:name [ string ] ; # 0..1 Human readable name for this subscription fhir:status [ code ] ; # 1..1 requested | active | error | off | entered-in-error fhir:topic [ canonical(SubscriptionTopic) ] ; # 1..1 Reference to the subscription topic being subscribed to fhir:contact ( [ ContactPoint ] ... ) ; # 0..* Contact details for source (e.g. troubleshooting) fhir:end [ instant ] ; # 0..1 When to automatically delete the subscriptionfhir:|fhir:managingEntity [ Reference(CareTeam|Device|Group|HealthcareService|Organization|Patient|Practitioner| PractitionerRole|RelatedPerson) ] ; # 0..1 Entity responsible for Subscription changes fhir:reason [ string ] ; # 0..1 Description of why this subscription was created fhir:filterBy ( [ # 0..* Criteria for narrowing the subscription topic stream fhir:resource [ uri ] ; # 0..1 Allowed Resource (reference to definition) for this Subscription filter fhir:filterParameter [ string ] ; # 1..1 Filter label defined in SubscriptionTopic fhir:comparator [ code ] ; # 0..1 I eq | ne | gt | lt | ge | le | sa | eb | ap fhir:modifier [ code ] ; # 0..1 I missing | exact | contains | not | text | in | not-in | below | above | type | identifier | of-type | code-text | text-advanced | iterate fhir:value [ string ] ; # 1..1 Literal value or resource path fhir:event ( [ CodeableConcept ] ... ) ; # 0..* Event to filter by ] ... ) ; fhir:channelType [ Coding ] ; # 1..1 Channel type for notificationsfhir:fhir:endpoint [ url ] ; # 0..1 URL where the channel sends notifications fhir:parameter ( [ # 0..* Channel type dependent information fhir:name [ string ] ; # 1..1 Name (key) of the parameter fhir:value [ string ] ; # 1..1 Value of the parameter to use or pass through ] ... ) ; fhir:heartbeatPeriod [ unsignedInt ] ; # 0..1 Interval in seconds to send 'heartbeat' notification fhir:timeout [ unsignedInt ] ; # 0..1 Timeout in seconds to attempt notification deliveryfhir:<a href="subscription-definitions.html#Subscription.contentType" title="The MIME type to send the payload in - e.g., `application/fhir+xml` or `application/fhir+json`. Note that: * clients may request notifications in a specific FHIR version by using the [FHIR Version Parameter](http.html#version-parameter) - e.g., `application/fhir+json; fhirVersion=4.0`.fhir:contentType [ code ] ; # 0..1 MIME type to send, or omit for no payloadfhir:fhir:content [ code ] ; # 0..1 empty | id-only | full-resource fhir:maxCount [ positiveInt ] ; # 0..1 Maximum number of events that can be combined in a single notification ]
Changes from both R4 and R4B
| Subscription | |
| Subscription.identifier |
|
| Subscription.name |
|
| Subscription.status |
|
| Subscription.topic |
|
| Subscription.managingEntity |
|
| Subscription.reason |
|
| Subscription.filterBy |
|
| Subscription.filterBy.resource |
|
| Subscription.filterBy.filterParameter |
|
| Subscription.filterBy.comparator |
|
| Subscription.filterBy.modifier |
|
| Subscription.filterBy.value |
|
| Subscription.filterBy.event |
|
| Subscription.channelType |
|
| Subscription.endpoint |
|
| Subscription.parameter |
|
| Subscription.parameter.name |
|
| Subscription.parameter.value |
|
| Subscription.heartbeatPeriod |
|
| Subscription.timeout |
|
| Subscription.contentType |
|
| Subscription.content |
|
| Subscription.maxCount |
|
| Subscription.criteria |
|
| Subscription.error |
|
| Subscription.channel |
|
See the Full Difference for further information
This analysis is available for R4 as XML or JSON and for R4B as XML or JSON .
Structure
| Name | Flags | Card. | Type |
Description
&
Constraints
Filter:
|
||||
|---|---|---|---|---|---|---|---|---|
|
|
DomainResource |
Information
about
a
request
for
notifications
to
a
client
based
on
a
SubscriptionTopic
Elements defined in Ancestors: id , meta , implicitRules , language , text , contained , extension , modifierExtension |
|||||
|
Σ | 0..* | Identifier |
Additional
identifiers
(business
identifier)
|
||||
|
Σ | 0..1 | string |
Human
readable
name
for
this
subscription
|
||||
|
?! Σ | 1..1 | code |
requested
|
active
|
error
|
off
|
entered-in-error
Binding: Subscription Status ( Required ) |
||||
|
Σ | 1..1 | canonical ( SubscriptionTopic ) |
Reference
to
the
subscription
topic
being
subscribed
to
|
||||
|
Σ | 0..* | ContactPoint |
Contact
details
for
source
(e.g.
troubleshooting)
|
||||
|
Σ | 0..1 | instant |
When
to
automatically
delete
the
subscription
|
||||
|
Σ | 0..1 | Reference ( CareTeam | Device | Group | HealthcareService | Organization | RelatedPerson | Patient | Practitioner | PractitionerRole ) |
Entity
responsible
for
Subscription
changes
|
||||
|
Σ | 0..1 | string |
Description
of
why
this
subscription
was
created
|
||||
|
Σ C | 0..* | BackboneElement |
Criteria
for
narrowing
the
subscription
topic
stream
+ Rule: Subscription filters may only contain a modifier or a comparator |
||||
|
Σ | 0..1 | uri |
Allowed
Resource
(reference
to
definition)
for
this
Subscription
filter
Binding: Types used with Subscriptions ( Extensible )
|
||||
|
Σ | 1..1 | string |
Filter
label
defined
in
SubscriptionTopic
|
||||
|
C | 0..1 | code |
eq
|
ne
|
gt
|
lt
|
ge
|
le
|
sa
|
eb
|
ap
Binding: Search Comparator ( Required ) |
||||
|
C | 0..1 | code |
missing
|
exact
|
contains
|
not
|
text
|
in
|
not-in
|
below
|
above
|
type
|
identifier
|
of-type
|
code-text
|
text-advanced
|
iterate
Binding: Search Modifier Code ( Required ) |
||||
|
Σ | 1..1 | string |
Literal
value
or
resource
path
|
||||
|
Σ | 0..* | CodeableConcept |
Event
to
filter
by
Binding: hl7VS-eventTypeCode
(
Example
)
|
||||
|
Σ | 1..1 | Coding |
Channel
type
for
notifications
Binding: Subscription Channel Type ( Extensible ) |
||||
|
Σ | 0..1 | url |
URL
where
the
channel
|
||||
|
0..* | BackboneElement |
Channel
type
dependent
information
|
|||||
|
1..1 | string |
Name
(key)
of
the
parameter
|
|||||
|
1..1 | string |
Value
of
the
parameter
to
use
or
pass
through
|
|||||
|
Σ | 0..1 | unsignedInt |
Interval
in
seconds
to
send
'heartbeat'
notification
|
||||
|
Σ | 0..1 | unsignedInt |
Timeout
in
seconds
to
attempt
notification
delivery
|
||||
|
Σ | 0..1 | code |
MIME
type
to
send,
or
omit
for
no
payload
Binding: Mime Types ( Required ) |
||||
|
Σ | 0..1 | code |
empty
|
id-only
|
full-resource
Binding: Subscription Payload Content ( Required ) |
||||
|
Σ | 0..1 | positiveInt |
Maximum
number
of
events
that
can
be
combined
in
a
single
notification
|
||||
Documentation
for
this
format
|
||||||||
See the Extensions for this resource
XML Template
<Subscription xmlns="http://hl7.org/fhir"><!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension --> <identifier><!-- 0..* Identifier Additional identifiers (business identifier) --></identifier> <name value="[string]"/><!-- 0..1 Human readable name for this subscription --> <status value="[code]"/><!-- 1..1 requested | active | error | off | entered-in-error --> <topic><!-- 1..1 canonical(SubscriptionTopic) Reference to the subscription topic being subscribed to --></topic> <contact><!-- 0..* ContactPoint Contact details for source (e.g. troubleshooting) --></contact> <end value="[instant]"/><!-- 0..1 When to automatically delete the subscription -->
<| </managingEntity><managingEntity><!-- 0..1 Reference(CareTeam|Device|Group|HealthcareService| Organization|Patient|Practitioner|PractitionerRole|RelatedPerson) Entity responsible for Subscription changes --></managingEntity> <reason value="[string]"/><!-- 0..1 Description of why this subscription was created --> <filterBy> <!-- 0..* Criteria for narrowing the subscription topic stream --> <resource value="[uri]"/><!-- 0..1 Allowed Resource (reference to definition) for this Subscription filter --> <filterParameter value="[string]"/><!-- 1..1 Filter label defined in SubscriptionTopic --> <comparator value="[code]"/><!-- I 0..1 eq | ne | gt | lt | ge | le | sa | eb | ap --> <modifier value="[code]"/><!-- I 0..1 missing | exact | contains | not | text | in | not-in | below | above | type | identifier | of-type | code-text | text-advanced | iterate --> <value value="[string]"/><!-- 1..1 Literal value or resource path --><</event><event><!-- 0..* CodeableConcept Event to filter by--></event> </filterBy> <channelType><!-- 1..1 Coding Channel type for notifications --></channelType>
<<endpoint value="[url]"/><!-- 0..1 URL where the channel sends notifications --> <parameter> <!-- 0..* Channel type dependent information --> <name value="[string]"/><!-- 1..1 Name (key) of the parameter --> <value value="[string]"/><!-- 1..1 Value of the parameter to use or pass through --> </parameter> <heartbeatPeriod value="[unsignedInt]"/><!-- 0..1 Interval in seconds to send 'heartbeat' notification --> <timeout value="[unsignedInt]"/><!-- 0..1 Timeout in seconds to attempt notification delivery --><<a href="subscription-definitions.html#Subscription.contentType" title="The MIME type to send the payload in - e.g., `application/fhir+xml` or `application/fhir+json`. Note that: * clients may request notifications in a specific FHIR version by using the [FHIR Version Parameter](http.html#version-parameter) - e.g., `application/fhir+json; fhirVersion=4.0`.<contentType value="[code]"/><!-- 0..1 MIME type to send, or omit for no payload --><<content value="[code]"/><!-- 0..1 empty | id-only | full-resource --> <maxCount value="[positiveInt]"/><!-- 0..1 Maximum number of events that can be combined in a single notification --> </Subscription>
JSON Template
{
"resourceType" : "Subscription",
// from Resource: id, meta, implicitRules, and language
// from DomainResource: text, contained, extension, and modifierExtension
"identifier" : [{ Identifier }], // Additional identifiers (business identifier)
"name" : "<string>", // Human readable name for this subscription
"status" : "<code>", // R! requested | active | error | off | entered-in-error
"topic" : "<canonical(SubscriptionTopic)>", // R! Reference to the subscription topic being subscribed to
"contact" : [{ ContactPoint }], // Contact details for source (e.g. troubleshooting)
"end" : "<instant>", // When to automatically delete the subscription
"|
"managingEntity" : { Reference(CareTeam|Device|Group|HealthcareService|
Organization|Patient|Practitioner|PractitionerRole|RelatedPerson) }, // Entity responsible for Subscription changes
"reason" : "<string>", // Description of why this subscription was created
"filterBy" : [{ // Criteria for narrowing the subscription topic stream
"resource" : "<uri>", // Allowed Resource (reference to definition) for this Subscription filter
"filterParameter" : "<string>", // R! Filter label defined in SubscriptionTopic
"comparator" : "<code>", // I eq | ne | gt | lt | ge | le | sa | eb | ap
"modifier" : "<code>", // I missing | exact | contains | not | text | in | not-in | below | above | type | identifier | of-type | code-text | text-advanced | iterate
"value" : "<string>", // R! Literal value or resource path
"
"event" : [{ CodeableConcept }] // Event to filter by
}],
"channelType" : { Coding }, // R! Channel type for notifications
"
"endpoint" : "<url>", // URL where the channel sends notifications
"parameter" : [{ // Channel type dependent information
"name" : "<string>", // R! Name (key) of the parameter
"value" : "<string>" // R! Value of the parameter to use or pass through
}],
"heartbeatPeriod" : "<unsignedInt>", // Interval in seconds to send 'heartbeat' notification
"timeout" : "<unsignedInt>", // Timeout in seconds to attempt notification delivery
"<a href="subscription-definitions.html#Subscription.contentType" title="The MIME type to send the payload in - e.g., `application/fhir+xml` or `application/fhir+json`. Note that:
* clients may request notifications in a specific FHIR version by using the [FHIR Version Parameter](http.html#version-parameter) - e.g., `application/fhir+json; fhirVersion=4.0`.
"contentType" : "<code>", // MIME type to send, or omit for no payload
"
"content" : "<code>", // empty | id-only | full-resource
"maxCount" : "<positiveInt>" // Maximum number of events that can be combined in a single notification
}
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> .[ a fhir:Subscription; fhir:nodeRole fhir:treeRoot; # if this is the parser root
# from # from# from Resource: fhir:id, fhir:meta, fhir:implicitRules, and fhir:language # from DomainResource: fhir:text, fhir:contained, fhir:extension, and fhir:modifierExtension fhir:identifier ( [ Identifier ] ... ) ; # 0..* Additional identifiers (business identifier) fhir:name [ string ] ; # 0..1 Human readable name for this subscription fhir:status [ code ] ; # 1..1 requested | active | error | off | entered-in-error fhir:topic [ canonical(SubscriptionTopic) ] ; # 1..1 Reference to the subscription topic being subscribed to fhir:contact ( [ ContactPoint ] ... ) ; # 0..* Contact details for source (e.g. troubleshooting) fhir:end [ instant ] ; # 0..1 When to automatically delete the subscriptionfhir:|fhir:managingEntity [ Reference(CareTeam|Device|Group|HealthcareService|Organization|Patient|Practitioner| PractitionerRole|RelatedPerson) ] ; # 0..1 Entity responsible for Subscription changes fhir:reason [ string ] ; # 0..1 Description of why this subscription was created fhir:filterBy ( [ # 0..* Criteria for narrowing the subscription topic stream fhir:resource [ uri ] ; # 0..1 Allowed Resource (reference to definition) for this Subscription filter fhir:filterParameter [ string ] ; # 1..1 Filter label defined in SubscriptionTopic fhir:comparator [ code ] ; # 0..1 I eq | ne | gt | lt | ge | le | sa | eb | ap fhir:modifier [ code ] ; # 0..1 I missing | exact | contains | not | text | in | not-in | below | above | type | identifier | of-type | code-text | text-advanced | iterate fhir:value [ string ] ; # 1..1 Literal value or resource path fhir:event ( [ CodeableConcept ] ... ) ; # 0..* Event to filter by ] ... ) ; fhir:channelType [ Coding ] ; # 1..1 Channel type for notificationsfhir:fhir:endpoint [ url ] ; # 0..1 URL where the channel sends notifications fhir:parameter ( [ # 0..* Channel type dependent information fhir:name [ string ] ; # 1..1 Name (key) of the parameter fhir:value [ string ] ; # 1..1 Value of the parameter to use or pass through ] ... ) ; fhir:heartbeatPeriod [ unsignedInt ] ; # 0..1 Interval in seconds to send 'heartbeat' notification fhir:timeout [ unsignedInt ] ; # 0..1 Timeout in seconds to attempt notification deliveryfhir:<a href="subscription-definitions.html#Subscription.contentType" title="The MIME type to send the payload in - e.g., `application/fhir+xml` or `application/fhir+json`. Note that: * clients may request notifications in a specific FHIR version by using the [FHIR Version Parameter](http.html#version-parameter) - e.g., `application/fhir+json; fhirVersion=4.0`.fhir:contentType [ code ] ; # 0..1 MIME type to send, or omit for no payloadfhir:fhir:content [ code ] ; # 0..1 empty | id-only | full-resource fhir:maxCount [ positiveInt ] ; # 0..1 Maximum number of events that can be combined in a single notification ]
Changes from both R4 and R4B
| Subscription | |
| Subscription.identifier |
|
| Subscription.name |
|
| Subscription.status |
|
| Subscription.topic |
|
| Subscription.managingEntity |
|
| Subscription.reason |
|
| Subscription.filterBy |
|
| Subscription.filterBy.resource |
|
| Subscription.filterBy.filterParameter |
|
| Subscription.filterBy.comparator |
|
| Subscription.filterBy.modifier |
|
| Subscription.filterBy.value |
|
| Subscription.filterBy.event |
|
| Subscription.channelType |
|
| Subscription.endpoint |
|
| Subscription.parameter |
|
| Subscription.parameter.name |
|
| Subscription.parameter.value |
|
| Subscription.heartbeatPeriod |
|
| Subscription.timeout |
|
| Subscription.contentType |
|
| Subscription.content |
|
| Subscription.maxCount |
|
| Subscription.criteria |
|
| Subscription.error |
|
| Subscription.channel |
|
See the Full Difference for further information
This analysis is available for R4 as XML or JSON and for R4B as XML or JSON .
Additional definitions: Master Definition XML + JSON , XML Schema / Schematron + JSON Schema , ShEx (for Turtle ) + see the extensions , the spreadsheet version & the dependency analysis
| Path | ValueSet | Type | Documentation |
|---|---|---|---|
| Subscription.status | SubscriptionStatusCodes (a valid code from Subscription Status ) | Required |
State values for FHIR Subscriptions. |
| Subscription.filterBy.resource | SubscriptionTypes | Extensible |
Types used with Subscriptions |
| All Resource Types | ui | ||
| Subscription.filterBy.comparator | SearchComparator | Required |
What Search Comparator Codes are supported in search. |
| Subscription.filterBy.modifier | SearchModifierCode | Required |
A supported modifier for a search parameter. |
| Subscription.filterBy.event |
Hl7VSEventTypeCode
(a
valid
code
from
eventType
)
|
Example |
Concepts specifying the trigger event for Version 2.x interface messages. |
| Subscription.channelType |
SubscriptionChannelType
(a
valid
code
from
SubscriptionChannel
Type
Codes
)
|
Extensible |
Core-defined FHIR channel types allowed for use in Subscriptions. |
| Subscription.contentType |
MimeTypes
(a
valid
code
from
urn:ietf:bcp:13
)
|
Required |
This value set includes all possible codes from BCP-13 (see http://tools.ietf.org/html/bcp13) |
| Subscription.content | SubscriptionPayloadContent | Required |
Codes
to
represent
how
much
resource
content
to
send
in
|
| UniqueKey | Level | Location | Description | Expression |
scr-1
|
Rule | Subscription.filterBy | Subscription filters may only contain a modifier or a comparator | (comparator.exists() and modifier.exists()).not() |
Applications are responsible for following FHIR security guidance . Some recommendations specific to subscriptions are provided on the Subscriptions Framework page.
As
indicated
on
the
Subscriptions
Framework
and
SubscriptionTopic
resource
pages,
subscriptions
can
have
more
than
a
single
resource
in
scope
(e.g.,
a
subscription
that
triggers
on
both
Condition
and
Observation
resources,
a
topic
tied
to
all
resources,
etc.).
If
there
are
filters
that
do
not
apply
to
every
resource
available
in
a
topic,
clients
SHOULD
ensure
that
the
element
is
filled
appropriately.
More
detail
can
be
found
in
the
Filters
and
Resource
Types
section
of
the
Subscriptions
Framework
page.
filterBy.resourceType
Subscription.filterBy.resourceType
There
are
three
options
available
when
specifying
the
contents
amount
of
content
a
Notification:
notification
will
contain:
empty
,
id-only
,
and
full-resource
.
These
options
change
the
level
of
detail
conveyed
in
the
notification
Bundle
.
When
deciding
which
payload
type
to
request,
systems
SHOULD
consider
both
ease
of
processing
and
security
of
PHI
(Personal
health
information).
To
mitigate
the
risk
of
information
leakage,
systems
SHOULD
use
the
minimum
level
of
detail
consistent
with
the
use
case.
In
practice,
id-only
provides
a
good
balance
between
security
and
performance
for
many
real-world
scenarios.
If
a
server
cannot
or
will
not
honor
a
payload
type
(e.g.,
will
not
send
full-resource
over
HTTP),
it
SHOULD
reject
the
Subscription
request.
A
server
MAY
instead
accept
the
subscription
with
modifications
and
return
the
accepted
and
modified
version
to
the
client.
When sending event notifications servers SHALL populate the SubscriptionStatus.notificationEvent structure with relevant information, depending on the payload type.
An
example
notification
with
an
empty
payload
can
be
found
here
.
With
the
content
type
of
empty
,
all
information
about
the
resources
involved
in
triggering
the
notification
is
only
available
via
channels
other
than
the
Subscription
itself
(e.g.,
the
REST
API
or
$events
operation).
This
mitigates
many
security
concerns
by
both
removing
most
PHI
from
the
notification
and
allows
servers
to
consolidate
authorization
and
authentication
logic.
When
the
subscriber
receives
a
notification
of
this
type,
it
may
query
the
server
to
fetch
all
the
relevant
resources
based
on
the
SubscriptionTopic
and
applicable
filters.
The
client
might
include
a
_lastUpdated
query
parameter,
supplying
its
last
query
timestamp
to
retrieve
only
the
most
recent
resources.
For
example,
if
the
notification
is
for
a
topic
about
patient
admission,
the
subscriber
will
generally
query
for
recent
Encounters
for
a
patient
or
group
of
patients,
then
fetch
them
as
needed.
When
populating
the
SubscriptionStatus.notificationEvent
structure
for
a
notification
with
an
empty
payload,
a
server
SHALL
NOT
include
references
to
resources
(e.g.,
SubscriptionStatus.notificationEvent.focus
and
SubscriptionStatus.notificationEvent.additionalContext
SHALL
NOT
be
present).
When
the
content
type
is
empty
,
notification
bundles
SHALL
NOT
contain
Bundle.entry
elements
other
than
the
SubscriptionStatus
for
the
notification.
An
example
notification
with
an
id-only
payload
can
be
found
here
.
With
the
content
type
of
id-only
,
the
resources
involved
in
triggering
the
notification
are
only
available
through
other
channels
(e.g.,
REST
API),
but
notifications
include
URLs
which
can
be
used
to
access
those
resources.
This
allows
servers
to
consolidate
authorization
and
authentication
logic,
while
removing
the
need
for
expensive
queries
by
subscribers.
When
a
subscriber
receives
a
notification
of
this
type,
it
may
directly
fetch
all
the
relevant
resources
using
the
supplied
resource
ids.
For
example,
if
the
notification
is
for
a
topic
about
patient
admission,
the
subscriber
may
fetch
the
Encounter(s)
for
a
patient
or
group
of
patients.
When
the
content
type
is
id-only
,
the
SubscriptionStatus.notificationEvent
structure
SHALL
include
references
to
the
appropriate
focus
resources
in
the
SubscriptionStatus.notificationEvent.focus
element.
This
provides
clients
a
fixed
location
to
consolidate
IDs
for
all
notification
types.
Additionally,
notification
bundles
MAY
contain,
in
addition
to
the
SubscriptionStatus
,
at
least
one
Bundle.entry
for
each
resource
relevant
to
the
notification.
For
example,
a
notification
for
a
topic
based
on
Encounter
MAY
include
a
reference
to
the
Encounter
and
MAY
also
include
additional
resources
deemed
relevant
(e.g.,
the
linked
Patient).
An
example
notification
with
a
full-resource
payload
can
be
found
here
.
With
the
content
type
of
full-resource
,
the
resources
involved
in
triggering
the
notification
are
included
in
the
notification
bundle.
When
a
subscriber
receives
a
notification
of
this
type,
resources
are
already
present
in
the
bundle,
though
the
subscriber
may
need
to
fetch
additional
resources
from
the
server.
For
example,
the
if
the
notification
is
for
a
topic
about
patient
admission,
the
subscriber
may
require
related
Observation
resources.
When
the
content
type
is
full-resource
,
the
SubscriptionStatus.notificationEvent
structure
SHALL
include
references
to
the
appropriate
focus
resources
in
the
SubscriptionStatus.notificationEvent.focus
element.
This
provides
clients
a
fixed
location
to
consolidate
IDs
for
all
notification
types.
Notification
bundles
for
full-resource
subscriptions
SHALL
contain,
in
addition
to
the
SubscriptionStatus
,
at
least
one
Bundle.entry
for
each
resource
relevant
to
the
notification.
For
example,
a
notification
for
a
topic
based
on
Encounter
SHALL
include
an
Encounter
and
MAY
include
additional
resources
deemed
relevant
(e.g.,
the
relevant
Patient).
Each
Bundle.entry
for
a
full-resource
notification
SHALL
contain
a
relevant
resource
in
the
entry.resource
element.
If
a
server
cannot
include
the
resource
contents
due
to
an
issue
with
a
specific
notification,
the
server
SHALL
populate
the
entry.request
and/or
entry.response
elements.
Subscriptions
allow
servers
to
batch
multiple
notifications
into
a
single
subscription-notification
Bundle.
For
example,
if
a
server
has
a
high-frequency
of
updates
(e.g.,
several
per
second),
it
could
be
beneficial
to
combine
notifications
to
reduce
traffic
and
overhead.
Note
that
servers
SHALL
NOT
delay
sending
notification
longer
than
time
span
specified
by
Subscription.heartbeat
.
The
Subscription.maxCount
element
allows
clients
to
specify
the
maximum
number
of
events
that
can
be
combined
in
a
single
notification.
When
present,
servers
SHALL
NOT
include
more
than
the
specified
number
of
events
in
a
notification
bundle.
Note
that
this
is
not
a
strict
limit
on
the
total
number
of
entries
in
a
bundle,
as
dependent
resources
(e.g.,
included
related
resources)
can
be
present
in
Bundles,
in
addition
to
the
event
notifications.
This specification defines a core set of channel types to cover the majority of common use cases. Servers MAY define additional channel types as needed. Below is some guidance for implementers to consider when selecting a channel type.
The FHIR standard makes extensive use of the RESTful model. Given the popularity of REST and widespread adoption, most implementers should consider using REST-hook channels whenever possible. In general, REST-based systems are well-supported (e.g., tooling, infrastructure, documentation, etc.), and will present the lowest bar for implementation.
Websockets are unique in the pre-defined channel types in being the only channel that does not require the client to have an endpoint. Due to this property, the websocket channel is very useful for clients where creating an endpoint would be difficult or impossible (e.g., mobile clients, web-based clients, etc.).
The
websocket
channel
type
is
still
undergoing
testing
and
refinement
-
current
details
can
be
found
in
the
FHIR
Subscriptions
Backport
Implementation
Guide
.
The Email channel is the only channel that could contest REST in non-FHIR implementations. That said, Email communication is often high-latency and is typically used for communication to individuals - not applications. Email channels are particularly useful in the context of these non-application use cases, such as public health notifications. For example, if a public health agency does not have the ability or desire to build a custom RESTful solution (e.g., creating and maintaining an endpoint to receive notifications, as well as software to consume those notifications), it is straightforward to map notifications to email addresses or aliases.
FHIR Messaging is a mechanism defined to allow for non-RESTful communication between FHIR servers and clients. One common use case is when connectivity is an issue (e.g., remote sites that batch all communications when connections are available). This channel defines how to integrate topic-based subscriptions with the FHIR Messaging model.
For use cases that are not well-met by any of the predefined channels, the Subscriptions Framework allows for custom channel definitions. Some examples of scenarios where custom channels may be applicable include:
To
receive
notifications
via
HTTP/S
POST,
a
client
requests
a
subscription
with
the
channel
type
of
`rest-hook`
(from
the
subscription-channel-type
Code
System)
and
and
an
endpoint
(
Subscription.endpoint
)
with
the
desired
URL.
Note
that
this
URL
must
be
accessible
by
the
hosting
server.
To
convey
an
event
notification,
the
server
POSTs
a
notification
Bundle
to
the
client's
nominated
endpoint
URL
per
the
format
requests
in
the
Subscription:
content-type
of
the
POST
SHALL
match
the
MIME
type
on
the
Subscription
Subscription.contentType
.
{parameter.name}:
{parameter.value}
.
When
a
subscription
is
created
for
a
REST
Hook
channel
type,
the
server
SHALL
set
initial
status
to
requested
,
pending
verification
of
the
nominated
endpoint
URL.
After
a
successful
handshake
notification
has
been
sent
and
accepted,
the
server
SHALL
update
the
status
to
active
.
Any
errors
in
the
initial
handshake
SHALL
result
in
the
status
being
changed
to
error
.
An
example
workflow
for
establishing
a
rest-hook
subscription
is
shown
below.
Subscription
with
the
channelType
set
to
rest-hook
.
requested
.
handshake
notification.
200
).
heartbeat
at
any
time
(SHOULD
at
least
once
per
heartbeatPeriod
).
heartbeat
via
HTTP
POST
and
returns
an
HTTP
success
code
(e.g.,
200
).
event-notification
when
triggered.
event-notification
via
HTTP
POST
and
returns
an
HTTP
code
(e.g.,
200
).
HTTP is neither a secure nor an encrypted channel, nor does it provide endpoint verification. It is strongly recommended that implementations refuse requests to send notifications to URLs using the HTTP protocol (use HTTPS instead).
While
the
primary
interface
for
FHIR
servers
is
the
FHIR
REST
API,
notifications
need
not
occur
via
REST.
Indeed,
some
subscribers
may
be
unable
to
maintain
an
outward-facing
HTTP
server
to
receive
triggered
notifications.
For
example,
a
public
health
organization
may
want
to
be
notified
of
outbreaks
of
various
illnesses.
This
can
be
accomplished
using
an
email
notification
channel.
To
receive
notifications
via
Email,
a
client
requests
a
subscription
with
the
channel
type
(
Subscription.channelType
)
of
email
(from
the
subscription-channel-type
Code
System)
and
an
endpoint
(
Subscription.endpoint
)
with
the
desired
email
URI
(e.g.,
mailto:public_health_notifications@example.org
).
The
server
will
send
a
new
message
each
time
a
notification
should
be
sent
(e.g.,
per
event
or
per
batch).
The
server
will
create
a
message
based
on
the
values
present
in
the
Subscription.contentType
and
Subscription.content
fields.
If
a
server
cannot
honor
the
requested
combination,
the
server
should
reject
the
Subscription
request
rather
than
send
unexpected
email
messages.
The email channel sets two guidelines about content:
Due
to
these
guidelines,
the
Subscription.contentType
refers
to
the
content
of
the
body
of
the
message.
Attachment
type
information
can
be
appended
as
a
MIME
parameter,
for
example:
text/plain
:
a
plain-text
body
with
no
attachment
text/html
:
an
HTML
body
with
no
attachment
text/plain;attach=application/fhir+json
:
a
plain-text
body
with
a
FHIR
JSON
bundle
attached
text/html;attach=application/fhir+xml
:
an
HTML
body
with
a
FHIR
XML
bundle
attached
The
Subscription.content
field
SHALL
be
applied
to
any
attachments,
and
MAY
be
applied
to
body
contents
(depending
on
server
implementation).
However,
a
server
must
not
include
a
body
which
exceeds
the
specified
content
level.
For
example,
a
server
may
choose
to
always
include
a
standard
message
in
the
body
of
the
message
containing
no
PHI
and
vary
the
attachment,
but
cannot
include
PHI
in
the
body
of
an
email
when
the
content
is
set
to
empty
.
An
example
workflow
using
the
email
channel
type
is
included
below.
Subscription
with
the
channelType
set
to
email
.
active
.
requested
.
250:
OK
).
heartbeat
at
any
time
(SHOULD
at
least
once
per
heartbeatPeriod
).
event-notification
at
any
time.
Email
(SMTP)
is
not
a
secure
channel.
Implementers
must
ensure
that
any
messages
containing
PHI
have
been
secured
according
to
their
policy
requirements
(e.g.,
use
of
a
system
such
as
Direct
).
There
are
times
when
it
is
desireable
desirable
to
use
Subscriptions
as
a
communication
channel
between
FHIR
servers
that
are
connected
via
Messaging
instead
of
REST.
This
can
be
accomplished
using
a
Subscription
with
the
channel
type
of
message
.
To
receive
notifications
via
messaging,
a
client
should
request
a
subscription
with
the
channel
type
(
Subscription.channelType
)
of
message
and
set
the
endpoint
(
Subscription.endpoint
)
to
the
destination
FHIR
server
base
URL.
Note
that
this
URL
must
be
accessible
by
the
hosting
server.
The
FHIR
server
hosting
the
subscription
(server)
will
send
FHIR
messages
to
the
destination
FHIR
server
(endpoint)
as
needed.
These
messages
will,
as
the
contents
of
the
message,
have
a
fully-formed
subscription-notification
Bundle.
An
example
message
can
be
found
here
.
An
example
workflow
using
the
message
channel
type
is
included
below.
Subscription
with
the
channelType
set
to
message
.
requested
.
handshake
notification.
heartbeat
at
any
time
(SHOULD
at
least
once
per
heartbeatPeriod
).
event-notification
at
any
time.
Note to Implementers: The Messaging channel type needs more testing and feedback to ensure all requirements are met before finalizing the specification.
Servers MAY require that the end-point is white-listed prior to allowing these kinds of subscriptions. Additionally, servers MAY impose authorization/authentication requirements for server to server communication (e.g., certificate pinning, etc.).
Defining
a
new
channel
type
requires
clear
communication
to
implementers
of
both
clients
and
servers
around
requirements
and
expectations.
Below
are
some
areas
which
should
be
considered
when
creating
a
channel.
Anyone
defining
a
channel
type
is
encouraged
to
publish
their
definition
at
registry.fhir.org
.
Note to Implementers: Warning: This section is still in early drafting; feedback from topic authors is welcome to refine the following guidance.
At a minimum, the following items should be defined:
Subscription.channelType
(e.g.,
'secure-mq'
instead
of
'channel')
Subscription.endpoint
(e.g.,
URI,
etc.)
Subscription.parameter
field
values
(e.g.,
REST-hook
defines
as
HTTP
headers
included
in
a
POST).
Note
that
channels
can
specify
general
behavior
and/or
specific
parameters
by
name
.
Subscription.contentType
(e.g.,
email
defines
this
as
the
email
body,
with
allowable
attachments.)
handshake
notifications
are
used,
and
guidance
on
usage
if
they
are
heartbeat
notifications
are
used,
and
guidance
on
timings
if
they
are
Defining a channel has security implications. While it is not expected that authors cover all aspects of security, guidance specific to the channel SHOULD be provided. For example, when discussing REST-hooks, this specification includes guidance about using HTTPS over HTTP.
If the channel CANNOT be secured, that should be stated with a warning not to transfer PHI. If the channel is or can be secured, guidance should be given on how configurations relate to PHI safety, for example:
Subscriptions can be used to manage long-lived requests for notifications. For details about management and expectations regarding errors, see Managing Subscriptions and Errors on the Subscriptions Framework page.
It
can
be
appropriate
for
a
server
to
include
authorization
information
alongside
notifications.
This
information
could
be
used
to
inform
a
recipient
about
how
authorization
should
be
done
when
querying-for
or
retrieving
resources
from
a
notification
(e.g.,
when
querying
based
on
an
empty
notification),
or
to
provide
tokens
or
other
information
needed
to
access
resources
referenced
in
the
notification
(e.g.,
when
retrieving
resources
based
on
an
id-only
notification).
Depending on the channel used, notifications MAY or MAY NOT be secure from third parties. Implementers SHOULD ensure that any authorization information included complies with security best practices (e.g., providing a token exchanged during an OAuth workflow, along with other data such as a client authentication token, for an access token).
When including authorization information in a notification, servers SHOULD use security best practices (e.g., short-lived and single-use tokens, temporary access codes, etc). For more information, see the FHIR Security Guidance document.
Search parameters for this resource. See also the full list of search parameters for this resource , and check the Extensions registry for search parameters on extensions related to this resource. The common parameters also apply. See Searching for more information about searching in REST, messaging, and services.
| Name | Type | Description | Expression | In Common |
| contact | token | Contact details for the subscription | Subscription.contact | |
| content-level | token | Content level included in notifications | Subscription.content | |
| filter-event | token | Filter event used to narrow notifications | Subscription.filterBy.event | |
| filter-value | string | Filter value used to narrow notifications | Subscription.filterBy.value | |
| identifier | token | A subscription identifier | Subscription.identifier | |
| name | string | A human-readable name | Subscription.name | |
| owner | reference | The managing entity |
Subscription.managingEntity
( Practitioner , Group , Organization , CareTeam , Device , Patient , HealthcareService , PractitionerRole , RelatedPerson ) |
|
|
payload
|
token | The mime-type of notifications | Subscription.contentType | |
| status | token | The current state of the subscription | Subscription.status | |
| topic | uri | The canonical topic url that triggers notifications | Subscription.topic | |
| type | token | The type of channel for the sent notifications | Subscription.channelType | |
| url | uri | The uri that will receive the notifications | Subscription.endpoint |