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"  | 
