diff options
author | Bryan Newbold <bnewbold@robocracy.org> | 2018-05-14 22:00:15 -0700 |
---|---|---|
committer | Bryan Newbold <bnewbold@robocracy.org> | 2018-05-14 22:00:15 -0700 |
commit | 6ca8ff2abdc3601e3da1f53a5562d96d3af1aac3 (patch) | |
tree | 4f5a4131340e83e665570d69a39a8139943338d2 | |
parent | 5dfe6818c13c67a5fa62c2ff0c3ccc7044ae16f6 (diff) | |
download | fatcat-6ca8ff2abdc3601e3da1f53a5562d96d3af1aac3.tar.gz fatcat-6ca8ff2abdc3601e3da1f53a5562d96d3af1aac3.zip |
copy openapi spec
-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" |