diff options
-rw-r--r-- | rust/fatcat-openapi2.yml | 272 |
1 files changed, 272 insertions, 0 deletions
diff --git a/rust/fatcat-openapi2.yml b/rust/fatcat-openapi2.yml new file mode 100644 index 00000000..6d6350ea --- /dev/null +++ b/rust/fatcat-openapi2.yml @@ -0,0 +1,272 @@ +--- +swagger: "2.0" +info: + title: fatcat + description: A scalable, versioned, API-oriented catalog of bibliographic entities + and file metadata + version: 0.1.0 +schemes: [http] +basePath: /v0 +host: api.fatcat.wiki +consumes: + - application/json +produces: + - application/json + +# Common properties across entities +x-entity-props: &ENTITYPROPS + state: + type: string + enum: ["wip", "active", "redirect", "deleted"] + ident: + type: string + #format: uuid + revision: + type: integer + redirect: + type: string + #format: uuid +x-entity-edit-props: &ENTITYEDITPROPS + id: + type: integer + ident: + type: string + revision: + type: integer + editgroup_id: + type: integer + + +definitions: + error: + type: object + required: + - message + properties: + message: + type: string + success: + type: object + required: + - message + properties: + message: + type: string + release_entity: + type: object + required: + - ident + - state + properties: + <<: *ENTITYPROPS + name: + type: string + orcid: + type: string + #format: custom + creator_entity: + type: object + properties: + <<: *ENTITYPROPS + name: + type: string + orcid: + type: string + #format: custom + entity_edit: + type: object + properties: + <<: *ENTITYEDITPROPS + editor: + type: object + required: + - username + properties: + username: + type: string + editgroup: + type: object + required: + - id + - editor_id + properties: + id: + type: integer + editor_id: + type: integer + changelogentry: + type: object + required: + - index + properties: + index: + type: integer + editgroup_id: + type: integer + timestamp: + type: string + format: date-time + +paths: + /creator: + post: + parameters: + - name: body + in: body + schema: + $ref: "#/definitions/creator_entity" + #- name: editgroup + # in: body + # type: string + responses: + 201: + description: created + schema: + $ref: "#/definitions/entity_edit" + 400: + description: bad request + schema: + $ref: "#/definitions/error" + default: + description: generic error response + schema: + $ref: "#/definitions/error" + /creator/{id}: + parameters: + - name: id + in: path + type: string + required: true + get: + responses: + 200: + description: fetch a single creator by id + schema: + $ref: "#/definitions/creator_entity" + 404: + description: no such creator + schema: + $ref: "#/definitions/error" + default: + description: generic error response + schema: + $ref: "#/definitions/error" + /creator/lookup: + get: + parameters: + - name: orcid + in: query + type: string + required: true + responses: + 200: + description: find a single creator by external identifer + schema: + $ref: "#/definitions/creator_entity" + 404: + description: no such creator + schema: + $ref: "#/definitions/error" + default: + description: generic error response + schema: + $ref: "#/definitions/error" + /editor/{username}: + parameters: + - name: username + in: path + type: string + required: true + get: + responses: + 200: + description: fetch generic information about an editor + schema: + $ref: "#/definitions/editor" + 404: + description: username not found + schema: + $ref: "#/definitions/error" + default: + description: generic error response + schema: + $ref: "#/definitions/error" + /editor/{username}/changelog: + parameters: + - name: username + in: path + type: string + required: true + get: + responses: + 200: + description: find changes (editgroups) by this editor which have been merged + schema: + $ref: "#/definitions/changelogentry" + 404: + description: username not found + schema: + $ref: "#/definitions/error" + default: + description: generic error response + schema: + $ref: "#/definitions/error" + /editgroup: + post: + responses: + 201: + description: successfully created + schema: + $ref: "#/definitions/editgroup" + 400: + description: invalid request parameters + schema: + $ref: "#/definitions/error" + default: + description: generic error response + schema: + $ref: "#/definitions/error" + /editgroup/{id}: + parameters: + - name: id + in: path + type: integer + required: true + get: + responses: + 200: + description: fetch editgroup by identifier + schema: + $ref: "#/definitions/editgroup" + 404: + description: no such editgroup + schema: + $ref: "#/definitions/error" + default: + description: generic error response + schema: + $ref: "#/definitions/error" + /editgroup/{id}/accept: + parameters: + - name: id + in: path + type: integer + required: true + post: + responses: + 200: + description: merged editgroup successfully ("live") + schema: + $ref: "#/definitions/success" + 400: + description: editgroup is in an unmergable state + schema: + $ref: "#/definitions/error" + 404: + description: no such editgroup + schema: + $ref: "#/definitions/error" + default: + description: generic error response + schema: + $ref: "#/definitions/error" |