---
title: General Resolver Service
---
# General Resolver Service
A resolver service is responsible for returning an object or the location of an object given an identifier of the object. The service descriptions here assume operation over HTTP.
## Operations
There are several operations that should be supported by a resolver service:
1. **Content Resolution** Retrieval of the identified resource.
2. **Content Properties Resolution** Retrieval of technical properties about the resource (format, size, dates, location, content variants)
3. **Content Metadata Resolution** Retrieval of metadata about the identified resource.
4. **Identifier Metadata Resolution** Retrieval of metadata about the resource identifier.
### Content Resolution
The response of the resolver is the location for the bytes of the requested resource.
### Content Properties Resolution
This is the low level information about a resource that is needed by a client to access the content. Information like size, date created / modified, checksum, media type, location.
### Content Metadata Resolution
The response of the resolver is the location for metadata describing the resource content. For example, a dataset might have an associated EML document that includes a description of the dataset properties.
The metadata may have an identifier or may just be a URL
### Retrieval of metadata about a resource identifier
`get(pid)` returns the object or a redirect to the location of the object identified by `pid`. If `pid` is not known to the service then it should return a `HTTP 404 Not Found` status. The body of a 404 response should be machine readable and include hints for where potentially broader resolution scope may be found.
`get_metadata(pid)` returns machine readable metadata about the object identified by `pid`.
`get_pid_metadata(pid)` returns machine readable metadata about the identifier `pid`.
## Metadata about the identifier
```json
{
"id":"",
"location": "URL of target",
"t_created": "date time with TZ",
"t_modified" : "date time with TZ",
"type":"URI of instance type definition",
"creator": "identifier of creator",
"about":"Brief descriptive text or structure"
}
```
As JSON-schema:
```json
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id":"https://w3id.org/resolver/root.metadata.json",
"title":"Root metadata for describing an identifier",
"type":"object",
"properties":{
"id":{
"description":"The identifier being described.",
"type":"string"
},
"target":{
"description":"Target of this identifier.",
"type":"string",
"format":"uri"
},
"t_created":{
"description":"Origin time of this identifier.",
"type": "string",
"format":"date-time",
},
"t_modified":{
"description":"Time at which this identifier metadata was last modified. If not specified, then this identifier has not been modified since creation.",
"type": "string",
"format":"date-time",
},
"type": {
"description":"The URI of the type definition of the identified resource.",np
"type":"string",
"format":"uri"
},
"persistence": {
"description": "The intended persistence of the identifier.",
"type":"string",
"format":"uri"
},
"creator":{
"description":"The creator of the identifier.",
"type": "string",
"format": "uri"
},
"about":{
"description":"Descriptive metadata about the identified resource.",
"type":"object"
}
},
"required":["id","location","t_created"]
}
```