---
# System prepended metadata

title: General Resolver Service

---

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