Service catalogue profile
How the services a government offers are described so residents can find and understand them.
Schemas: 2
Code lists: 2
Standards: schema.org, Open Referral / HSDS
ServiceAtLocation
One service delivered at one place, with the hours that apply there. HSDS models this as a separate join rather than a field on either side, because a service and a location are independent: one office delivers many services, one service runs from many offices, and the opening hours belong to the pairing rather than to either alone.
Standards: Open Referral / HSDS
| Field | Type | Definition | Required |
|---|---|---|---|
@type |
"ServiceAtLocation" |
Always ServiceAtLocation. |
Yes |
@id |
string |
This pairing's own dereferenceable identifier. | No |
location |
Reference |
A Facility from _core. | Yes |
openingHoursSpecification |
object[] |
schema:OpeningHoursSpecification - the hours this service is available at this location, which may differ from the location's own general hours. | No |
appointmentRequired |
boolean |
Whether this service must be booked in advance at this location. | No |
description |
string |
A plain-language note on this specific pairing, when it differs from the service's own description - e.g. a satellite office offering only part of the service. | No |
availableLanguage |
string[] |
BCP 47 tags for languages available at this specific location, where they differ from the service's own availableLanguage. |
No |
{
"@type": "ServiceAtLocation",
"@id": "https://example-city.gov/id/service-at-location/birth-certificate-city-hall",
"location": {
"@id": "https://example-city.gov/id/facility/city-hall",
"name": "Example City Hall"
},
"appointmentRequired": false,
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday"
],
"opens": "09:00",
"closes": "16:00"
}
],
"availableLanguage": [
"en-US",
"es-US"
]
}
Service
A service a resident can obtain from government: a birth certificate, a business registration, housing support, a parking permit. The requests profile covers reporting a problem; this covers finding and using a service, which is the most common thing anyone asks a government website. Mirrors Open Referral / HSDS, which remains the source model. This is the fuller definition of schema:GovernmentService; requests/service.schema.json describes the same type at the depth Open311 needs, and a publisher serving both should use this one.
Standards: Open Referral / HSDS
| Field | Type | Definition | Required |
|---|---|---|---|
@id |
string |
This service's own dereferenceable identifier. | Yes |
@type |
"GovernmentService" |
Always GovernmentService, a real schema.org type. |
Yes |
name |
string |
The service's public name, e.g. 'Apply for a business licence'. | Yes |
alternateName |
string[] |
Other names residents might know this service by. | No |
description |
string |
A plain-language explanation of the service, shown to residents deciding whether it's the one they need. | No |
url |
string |
Where more information about this service can be found. | No |
identifier |
Identifier[] |
Any scheme-qualified identifiers for this service beyond its @id. |
No |
serviceCode |
string |
The publisher's own code. Shared with the requests profile. | No |
serviceType |
string |
The publisher's grouping. | No |
keywords |
string[] |
Search terms residents might use to find this service. | No |
provider |
Reference |
The GovernmentOrganization providing it. | Yes |
areaServed |
Reference |
The Jurisdiction this service is available in. |
No |
serviceStatus |
string |
Whether the service is currently available. HSDS distinguishes defunct from temporarily closed because a resident needs to know whether to come back. Optional at Core conformance, because Open311 service catalogues carry no status field and requiring it would make them unrepresentable. Required at Standard: a service listing that cannot say whether the service still exists is of limited use. | No |
lifeEvent |
string[] |
The life events this service relates to. People look for services by circumstance - having a baby, losing a job, moving home - not by the department that happens to run them, which is why the EU Single Digital Gateway organises services this way. | No |
eligibility |
object |
Who may use the service. schema:PeopleAudience already carries age and geography; the free-text criterion carries what a structured audience cannot express. | No |
applicationProcess |
string |
How to apply, in plain language. HSDS treats this as central and it is what residents actually need; a service described without it is a listing rather than a route to anything. | No |
requiredDocument |
object[] |
What an applicant must bring or supply. The single most common reason an application fails at the counter. | No |
cost |
object |
What it costs. A free service must say so explicitly rather than omitting the field, because absence reads as unknown. | No |
processingTime |
string |
Expected time to completion, as an ISO 8601 duration. | No |
availableChannel |
object[] |
schema:ServiceChannel - online, phone, in person, post. | No |
availableAtLocation |
ServiceAtLocation[] |
Where the service is delivered in person, and when. HSDS keeps this as a separate join because a service and a location are independent things with a many-to-many relationship. | No |
availableLanguage |
string[] |
BCP 47 tags. | No |
interpretationAvailable |
boolean |
Whether interpretation is offered for languages not listed. | No |
accessibilityNote |
string |
Accommodations available for residents with disabilities. | No |
relatedLegislation |
Reference |
The provision the service is delivered under. | No |
dateModified |
string |
When this record was last updated. | No |
sourceDataset |
string |
The Dataset this record was published as part of. |
No |
{
"@id": "https://example-city.gov/id/service/birth-certificate",
"@type": "GovernmentService",
"name": "Order a copy of a birth certificate",
"alternateName": [
"Birth record request"
],
"description": "Order a certified copy of a birth registered in Example City.",
"url": "https://example-city.gov/services/birth-certificate",
"serviceCode": "VIT-001",
"serviceType": "Vital records",
"serviceStatus": "active",
"lifeEvent": [
"birth",
"family"
],
"keywords": [
"birth certificate",
"vital records",
"certified copy"
],
"provider": {
"@id": "https://example-city.gov/id/organization/city-government",
"name": "Example City Government"
},
"areaServed": {
"@id": "https://example-city.gov/id/jurisdiction/example-city",
"name": "Example City"
},
"eligibility": {
"@type": "PeopleAudience",
"audienceType": "The person named on the record, a parent, a legal guardian, or a legal representative",
"requiredMinAge": 18,
"geographicArea": {
"@id": "https://example-city.gov/id/jurisdiction/example-city"
},
"eligibilityCriteria": "Applicants under 18 may apply with a parent or guardian co-signing. Proof of relationship is required for third-party applicants."
},
"applicationProcess": "Apply online, by post, or in person at City Hall. Online applications are processed first. Postal applications must include a photocopy of identification; do not send original documents.",
"requiredDocument": [
{
"@type": "RequiredDocument",
"name": "Photo identification",
"description": "Driver's licence, passport or state ID card."
},
{
"@type": "RequiredDocument",
"name": "Proof of relationship",
"description": "Required only where the applicant is not the person named on the record.",
"optional": true
}
],
"cost": {
"@type": "ServiceCost",
"free": false,
"amount": {
"@type": "MonetaryAmount",
"value": 25,
"currency": "USD"
},
"description": "$25 for the first copy, $8 for each additional copy ordered at the same time.",
"waiverAvailable": true
},
"processingTime": "P10D",
"availableLanguage": [
"en-US",
"es-US"
],
"interpretationAvailable": true,
"accessibilityNote": "City Hall counters are step-free. Induction loops are available at counters 1 to 4.",
"availableChannel": [
{
"@type": "ServiceChannel",
"serviceUrl": "https://example-city.gov/services/birth-certificate/apply",
"servicePhone": {
"@type": "ContactPoint",
"telephone": "+1-555-0142"
},
"processingTime": "P10D",
"availableLanguage": [
"en-US",
"es-US"
]
}
],
"availableAtLocation": [
{
"@type": "ServiceAtLocation",
"@id": "https://example-city.gov/id/service-at-location/birth-certificate-city-hall",
"location": {
"@id": "https://example-city.gov/id/facility/city-hall",
"name": "Example City Hall"
},
"appointmentRequired": false,
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday"
],
"opens": "09:00",
"closes": "16:00"
}
],
"availableLanguage": [
"en-US",
"es-US"
]
}
],
"dateModified": "2026-08-14"
}