--- 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"] } ```