Image courtesy of Patrick Hochstenbach.
| Requirement | Purpose | Request syntax |
| mandatory | all contributions | baseURL-service/*/contributor-id-uri/, e.g. <https://mirepo.org/createdby/*/https://orcid.org/1234-5678-1234-5678> |
| optional | contributions since | baseURL-service/yyyymmdd/contributor-id-uri/, e.g. <https://github.com/byuser/20231107/https://github.com/phonedude/> |
| HTTP header | Requirement | Value |
| HTTP status code | mandatory | For successful requests: 200 OK. For unsupported requests (i.e. no support for the optional "contributions since" request) and malformed requests (e.g. 3-digit date): 400 Bad Request. For unknown contributor identifiers: 404 Not Found |
Content-Type |
mandatory | application/json |
Link |
mandatory for paged response | links with rel="prev" and/or rel="next" and type="application/json" to point at previous/next contributions |
| Property | Requirement | Cardinality | Data Type | Content |
contributor |
mandatory | [1] | HTTP URI | contributor identifier URI |
| Property | Requirement | Cardinality | Data Type | Content |
contribution-page |
mandatory | [1] | HTTP URI | URI of contribution, e.g. landing page URI |
accession-date |
mandatory | [1] | ISO8601 date, Complete date format | repository accession date |
publication-date |
optional | [0,1] | ISO8601 date, Year format | publication date |
cite-as |
optional | [0,1] | HTTP URI | persistent identifier URI (redirects to landing page URI) |
contributor-type |
optional | [0,n] | HTTP URI | contributor type URI from vocabulary, e.g. https://credit.niso.org/ |
contribution-type |
optional | [0,n] | HTTP URI | contribution type URI from vocabulary, e.g. https://vocabularies.coar-repositories.org/resource_types/ |
service-doc as the link relation typeservice-desc as the link relation type/.well-known/authoridy URI that resolves to a schema/template/OpenAPI-spec specifying the nature of the authorIDy implementation| Sample authorIDy Response Body with required properties only |
{
"contributor": "https://orcid.org/1234-5678",
"contributions": [
{
"contribution-page": "https://mirepo.org/item/9876",
"accession-date": "2023-01-04"
},
{
"contribution-page": "https://mirepo.org/item/5432",
"accession-date": "2022-03-20"
}
]
}
|
| Sample authorIDy Response Body including optional properties |
{
"contributor": "https://orcid.org/1234-5678",
"contributions": [
{
"contribution-page": "https://mirepo.org/item/9876",
"accession-date": "2023-01-04",
"publication-date": "2022",
"cite-as": "https://doi.org/12.9876",
"contributor-type": [
"https://credit.niso.org/contributor-roles/writing-original-draft/",
"https://credit.niso.org/contributor-roles/software/"
],
"contribution-type": [
"https://vocabularies.coar-repositories.org/resource_types/c_6501/",
"https://vocabularies.coar-repositories.org/resource_types/c_c950/"
]
},
{
"contribution-page": "https://mirepo.org/item/5432",
"accession-date": "2022-03-20",
"publication-date": "2021",
"cite-as": "https://doi.org/84.47562",
"contributor-type": [
"https://credit.niso.org/contributor-roles/writing-original-draft/"
],
"contribution-type": [
"https://vocabularies.coar-repositories.org/resource_types/c_6501/"
]
}
]
}
|
| Sample JSON Schema for authorIDy Response Body |
{
"$schema": "http://json-schema.org/draft-04/schema#",
"$id": "https://signposting.org/authorIDy/schema.json",
"title": "authorIDy",
"description": "An authorIDy response body",
"type": "object",
"properties": {
"contributor": {
"description": "contributor identifier URI",
"type": "string",
"pattern": "http(s)?://.*"
},
"contributions": {
"description": "list of entries, one entry per contribution",
"type": "array",
"items": {
"type": "object",
"properties": {
"contribution-page": {
"description": "URI of contribution, e.g. landing page URI",
"type": "string",
"pattern": "http(s)?://.*"
},
"accession-date": {
"description": "repository accession date",
"type": "string",
"pattern": "\\d{4}-[01]\\d-[0-3]\\d"
},
"publication-date": {
"description": "publication date",
"type": "string",
"pattern": "\\d{4}"
},
"cite-as": {
"description": "persistent identifier URI (redirects to landing page URI)",
"type": "string",
"pattern": "http(s)?://.*"
},
"contributor-type": {
"description": "contributor type URI from vocabulary,
e.g. https://credit.niso.org/",
"type": "array",
"items": {
"type": "string",
"pattern": "http(s)?://.*"
}
},
"contribution-type": {
"description": "contribution type URI from vocabulary,
e.g. https://vocabularies.coar-repositories.org/resource_types/",
"type": "array",
"items": {
"type": "string",
"pattern": "http(s)?://.*"
}
}
},
"required": [
"contribution-page",
"accession-date"
]
},
"minItems": 1
}
},
"required": [
"contributor",
"contributions"
]
}
|
| Sample OpenAPI Description for authorIDy Interface |
{
"openapi": "3.0.3",
"info": {
"description": "This is mirepo's authorIDy instance",
"version": "v1.0",
"title": "mirepo authorIDy",
"termsOfService": "https://mirepo.org/terms-of-service/",
"contact": {
"email": "admin@mirepo.org"
},
"license": {
"name": "AGPL v3",
"url": "https://www.gnu.org/licenses/agpl-3.0.en.html"
}
},
"servers": [
{
"url": "https://mirepo.org/authorIDy",
"description": "The production authorIDy server"
}
],
"paths": {
"/*/{contributorID}": {
"get": {
"description": "Retrieve all contributions for a specified contributor identifier.",
"parameters": [
{
"name": "contributorID",
"in": "path",
"description": "The HTTP identifier of a contributor",
"required": true,
"schema": {
"type": "string",
"pattern": "http(s)?://.*"
},
"style": "simple"
}
],
"responses": {
"200": {
"description": "Successful operation",
"headers": {
"Link": {
"schema": {
"type": "array",
"items": {
"type": "string"
},
"example":
"<http://service/{sinceDate}/{contributorID}?page=0>
; rel=\"prev\",
<http://service/{sinceDate}/{contributorID}?page=2>
; rel=\"next\""
},
"required": false,
"description": "Optional links to next or previous pages (or both)"
}
},
"content": {
"application/json":
{
"schema":
{
"$ref": "https://signposting.org/authorIDy/authorIDy_schema.json"
}
}
}
},
"404": {
"description": "Unknown contributor identifier"
}
}
}
},
"/{sinceDate}/{contributorID}": {
"get": {
"description": "Retrieve contributions since and including
an accession date (yyyymmdd) for a specified contributor identifier.",
"parameters": [
{
"name": "contributorID",
"in": "path",
"description": "The HTTP identifier of a contributor",
"required": true,
"schema": {
"type": "string",
"pattern": "http(s)?://.*"
},
"style": "simple"
},
{
"name": "sinceDate",
"in": "path",
"description": "The accession date in yyyymmdd format",
"required": true,
"schema": {
"type": "string",
"pattern": "\\d{4}\\d{2}\\d{2}"
},
"style": "simple"
}
],
"responses": {
"200": {
"description": "Successful operation",
"headers": {
"Link": {
"schema": {
"type": "array",
"items": {
"type": "string"
},
"example":
"<http://service/{sinceDate}/{contributorID}?page=0>
; rel=\"prev\",
<http://service/{sinceDate}/{contributorID}?page=2>
; rel=\"next\""
},
"required": false,
"description": "Optional links to next or previous pages (or both)"
}
},
"content": {
"application/json":
{
"schema":
{
"$ref": "https://signposting.org/authorIDy/authorIDy_schema.json"
}
}
}
},
"404": {
"description": "Unknown contributor identifier"
},
"400": {
"description": "Date in yyyymmdd format required."
}
}
}
}
}
}
|