timoth-y/kicksware-api

View on GitHub
openapi.yaml

Summary

Maintainability
Test Coverage
openapi: 3.0.0
info:
  title: Kicksware API
  version: "1.0"
servers:
  - description: Kicksware API endpoint
    url: https://api.kicksware.com
  - description: Kicksware CDN Endpoint
    url: https://cdn.kicksware.com
tags:
  - name: users
    description: Users
  - name: auth
    description: Auth
paths:
  /users:
    get:
      tags:
        - users
      summary: Get all users
      description: ""
      operationId: users
      parameters: []
      deprecated: false
      responses:
        200:
          description: list of all users
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/User'
    post:
      tags:
        - users
      summary: Add new user
      description: ""
      operationId: add-new-user
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/User'
      deprecated: false
      responses:
        200:
          description: added user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
    put:
      tags:
        - users
      summary: Update user
      description: ""
      operationId: update-user
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/User'
      deprecated: false
      responses:
        200:
          description: updated user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
  /users/{userID}:
    get:
      tags:
        - users
      summary: Get user
      description: ""
      operationId: get-user
      parameters:
        - name: userID
          in: path
          description: br1bag6sm833ai0sj00g
          required: true
          schema:
            type: string
      deprecated: false
      responses:
        200:
          description: user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
    delete:
      tags:
        - users
      summary: Delete user
      description: ""
      operationId: delete-user
      parameters:
        - name: userID
          in: path
          description: ""
          required: true
          schema:
            type: string
      deprecated: false
      responses:
        200:
          description: user deleted success
  /users/query:
    post:
      tags:
        - users
      summary: Get queried users
      description: ""
      operationId: get-queried-users
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestQuery'
      deprecated: false
      responses:
        200:
          description: list of queried users
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/User'
  /auth/sign-up:
    post:
      tags:
        - auth
      summary: Sign Up
      description: ""
      operationId: sign-up
      parameters: [ ]
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/User'
      deprecated: false
      security: [ ]
      responses:
        200:
          description: token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthToken'
  /auth/login:
    post:
      tags:
        - auth
      summary: Login
      description: ""
      operationId: login
      parameters: [ ]
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/User'
      deprecated: false
      responses:
        200:
          description: token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthToken'
      security: [ ]
  /auth/remote:
    post:
      tags:
        - auth
      summary: Remote (OAuth 2.0)
      description: ""
      operationId: remote-oauth-20
      parameters: [ ]
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/User'
      deprecated: false
      responses:
        200:
          description: token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthToken'
      security: [ ]
  /auth/guest:
    get:
      tags:
        - auth
      summary: Guest
      description: ""
      operationId: guest
      parameters: [ ]
      deprecated: false
      responses:
        200:
          description: token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthToken'
      security: [ ]
  /auth/token-refresh:
    get:
      tags:
        - auth
      summary: Refresh token
      description: ""
      operationId: refresh-token
      parameters:
        - name: token
          in: query
          description: ""
          required: false
          schema:
            type: string
      deprecated: false
      responses:
        200:
          description: token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthToken'
      security: [ ]
  /auth/logout:
    get:
      tags:
        - auth
      summary: Logout
      description: ""
      operationId: logout
      parameters:
        - name: token
          in: query
          description: ""
          required: false
          schema:
            type: string
      deprecated: false
      responses:
        200:
          description: Logged out
  /mail/confirm:
    get:
      tags:
        - mail
      summary: Send confirm email
      description: ""
      operationId: send-confirm-email
      parameters:
        - name: userID
          in: query
          description: ""
          required: false
          schema:
            type: string
        - name: callbackURL
          in: query
          description: ""
          required: false
          schema:
            type: string
      deprecated: false
      responses:
        200:
          description: Send success
  /mail/password-reset:
    get:
      tags:
        - mail
      summary: Send reset password
      description: ""
      operationId: send-reset-password
      parameters:
        - name: userID
          in: query
          description: ""
          required: false
          schema:
            type: string
        - name: callbackURL
          in: query
          description: ""
          required: false
          schema:
            type: string
      deprecated: false
      responses:
        200:
          description: Send success
  /mail/notify:
    get:
      tags:
        - mail
      summary: Send notification
      description: ""
      operationId: send-notification
      parameters:
        - name: userID
          in: query
          description: ""
          required: false
          schema:
            type: string
        - name: content
          in: query
          description: ""
          required: false
          schema:
            type: string
      deprecated: false
      responses:
        200:
          description: Send success
  /interact/like/{entityID}:
    get:
      tags:
        - interact
      summary: Like
      description: ""
      operationId: like
      parameters:
        - name: entityID
          in: path
          description: ""
          required: true
          schema:
            type: string
      deprecated: false
      responses:
        200:
          description: Like success
  /interact/unlike/{entityID}:
    get:
      tags:
        - interact
      summary: Unlike
      description: ""
      operationId: unlike
      parameters:
        - name: entityID
          in: path
          description: ""
          required: true
          schema:
            type: string
      deprecated: false
      responses:
        200:
          description: Unlike success
  /references/sneakers:
    get:
      tags:
        - references
      summary: Get all sneakers
      description: ""
      operationId: get-all-sneakers
      parameters: []
      deprecated: false
      responses:
        200:
          description: List of all sneakers
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SneakerReference'
    post:
      tags:
        - references
      summary: Add sneaker reference
      description: ""
      operationId: add-sneaker-reference
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SneakerReference'
      deprecated: false
      responses:
        200:
          description: Added sneaker reference
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SneakerReference'
    patch:
      tags:
        - references
      summary: Update sneaker reference
      description: ""
      operationId: update-sneaker-reference
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SneakerReference'
      deprecated: false
      responses:
        200:
          description: Updated snaeker reference
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SneakerReference'
  /references/sneakers/{referenceId}:
    get:
      tags:
        - references
      summary: Get specific sneakers
      description: ""
      operationId: get-specific-sneakers
      parameters:
        - name: referenceId
          in: path
          description: ""
          required: true
          schema:
            type: string
      deprecated: false
      responses:
        200:
          description: One snaeker reference
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SneakerReference'
  /references/sneakers/query:
    post:
      tags:
        - references
      summary: Get queried sneakers
      description: ""
      operationId: get-queried-sneakers
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestQuery'
      deprecated: false
      responses:
        200:
          description: List of all sneakers
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SneakerReference'
  /references/sneakers/multiply:
    post:
      tags:
        - references
      summary: Add multiply sneaker references
      description: ""
      operationId: add-multiply-sneaker-references
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/SneakerReference'
      deprecated: false
      responses:
        200:
          description: list of all sneakers
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SneakerReference'
  /references/sneakers/count:
    get:
      tags:
        - references
      summary: Count all sneakers
      description: ""
      operationId: count-all-sneakers
      parameters: []
      deprecated: false
      responses:
        200:
          description: count of all sneakers
          content:
            text/plain:
              schema:
                type: number
    post:
      tags:
        - references
      summary: Count queried sneakers
      description: ""
      operationId: count-queried-sneakers
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestQuery'
      deprecated: false
      responses:
        200:
          description: count of queried sneakers
          content:
            text/plain:
              schema:
                type: number
  /products/sneakers:
    get:
      tags:
        - products
      summary: Get all products
      description: ""
      operationId: get-all-products
      parameters: []
      deprecated: false
      responses:
        200:
          description: List of all sneaker products
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SneakerProduct'
    post:
      tags:
        - products
      summary: Add new product
      description: ""
      operationId: add-new-product
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SneakerProduct'
      deprecated: false
      responses:
        200:
          description: Added sneaker product
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SneakerProduct'
    patch:
      tags:
        - products
      summary: Update product
      description: ""
      operationId: update-product
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SneakerProduct'
      deprecated: false
      responses:
        200:
          description: Updated sneaker product
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SneakerProduct'
  /products/sneakers/{sneakerId}:
    get:
      tags:
        - products
      summary: Get specific product
      description: ""
      operationId: get-specific-product
      parameters:
        - name: sneakerId
          in: path
          description: ""
          required: true
          schema:
            type: string
      deprecated: false
      responses:
        200:
          description: Specific sneaker product
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SneakerProduct'
  /products/sneakers/query:
    post:
      tags:
        - products
      summary: Get queried products
      description: ""
      operationId: get-queried-products
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestQuery'
      deprecated: false
      responses:
        200:
          description: List of queried sneaker products
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SneakerProduct'
  /products/sneakers/{sneakerID}:
    delete:
      tags:
        - products
      summary: Delete product
      description: ""
      operationId: delete-product
      parameters:
        - name: sneakerID
          in: path
          description: ""
          required: true
          schema:
            type: string
      deprecated: false
      responses:
        200:
          description: Delete success
  /products/sneakers/{sneakerId}/images:
    put:
      tags:
        - products
      summary: Add product images
      description: ""
      operationId: add-product-images
      parameters:
        - name: sneakerId
          in: path
          description: ""
          required: true
          schema:
            type: string
      deprecated: false
      responses:
        200:
          description: Add images success
  /products/sneakers/count:
    get:
      tags:
        - products
      summary: Count all products
      description: ""
      operationId: count-all-products
      parameters: []
      deprecated: false
      responses:
        200:
          description: count of all sneaker products
          content:
            text/plain:
              schema:
                type: number
    post:
      tags:
        - products
      summary: Count queried products
      description: ""
      operationId: count-queried-products
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SneakerProduct'
      deprecated: false
      responses:
        200:
          description: count of all sneaker products
          content:
            text/plain:
              schema:
                type: number
  /search/reference:
    get:
      tags:
        - search
      summary: Search sneakers
      description: ""
      operationId: search-snekaers
      parameters:
        - name: query
          in: query
          description: ""
          required: false
          schema:
            type: string
      deprecated: false
      responses:
        200:
          description: List of all sneakers
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SneakerReference'
    post:
      tags:
        - search
      summary: Sync multiply records with Elasticsearch
      description: ""
      operationId: sync-queried-records-with-elasticsearch
      parameters:
        - name: referenceId
          in: query
          description: Multiply
          required: true
          schema:
            type: string
      deprecated: false
      responses:
        200:
          description: Sync success
  /search/reference/by/{field}:
    get:
      tags:
        - search
      summary: Search sneakers by property
      description: ""
      operationId: search-sneakers-by-property
      parameters:
        - name: field
          in: path
          description: ""
          required: true
          schema:
            type: string
        - name: query
          in: query
          description: ""
          required: false
          schema:
            type: string
      deprecated: false
      responses:
        200:
          description: List of all sneakers
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SneakerReference'
  /search/reference/sku/{sku}:
    get:
      tags:
        - search
      summary: Search sneakers by SKU
      description: ""
      operationId: search-sneakers-by-sku
      parameters:
        - name: sku
          in: path
          description: ""
          required: true
          schema:
            type: string
      deprecated: false
      responses:
        200:
          description: List of all sneakers
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SneakerReference'
  /search/reference/brand/{brand}:
    get:
      tags:
        - search
      summary: Search sneakers by brand
      description: ""
      operationId: search-sneakers-by-brand
      parameters:
        - name: brand
          in: path
          description: ""
          required: true
          schema:
            type: string
      deprecated: false
      responses:
        200:
          description: List of all sneakers
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SneakerReference'
  /search/reference/model/{model}:
    get:
      tags:
        - search
      summary: Search sneakers by model
      description: ""
      operationId: search-sneakers-by-model
      parameters:
        - name: model
          in: path
          description: ""
          required: true
          schema:
            type: string
      deprecated: false
      responses:
        200:
          description: List of all sneakers
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SneakerReference'
  /search/reference/{referenceId}:
    post:
      tags:
        - search
      summary: Sync one record with Elasticsearch
      description: ""
      operationId: sync-one-record-with-elasticsearch
      parameters:
        - name: referenceId
          in: path
          description: ""
          required: true
          schema:
            type: string
      deprecated: false
      responses:
        200:
          description: List of all sneakers
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SneakerReference'
  /search/reference/all:
    post:
      tags:
        - search
      summary: Sync all records with Elasticsearch
      description: ""
      operationId: sync-all-records-with-elasticsearch
      parameters: []
      deprecated: false
      responses:
        200:
          description: Sync success
  /search/reference/query:
    post:
      tags:
        - search
      summary: Sync queried records with Elasticsearch
      description: ""
      operationId: sync-queried-records-with-elasticsearch-1
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestQuery'
      deprecated: false
      responses:
        200:
          description: Sync success
  /orders:
    get:
      tags:
        - orders
      summary: Get all orders
      description: ""
      operationId: get-all-orders
      parameters: []
      deprecated: false
      responses:
        200:
          description: List of all orders
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Order'
    post:
      tags:
        - orders
      summary: Add new order
      description: ""
      operationId: add-new-order
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Order'
      deprecated: false
      responses:
        200:
          description: Added order
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
    patch:
      tags:
        - orders
      summary: Update order
      description: ""
      operationId: update-order
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Order'
      deprecated: false
      responses:
        200:
          description: Updated orders
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
  /orders/{orderID}:
    get:
      tags:
        - orders
      summary: Get specific order
      description: ""
      operationId: get-specific-order
      parameters:
        - name: orderID
          in: path
          description: ""
          required: true
          schema:
            type: string
      deprecated: false
      responses:
        200:
          description: Specific order
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
  /orders/query:
    post:
      tags:
        - orders
      summary: Get queried orders
      description: ""
      operationId: get-queried-orders
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestQuery'
      deprecated: false
      responses:
        200:
          description: List of queried orders
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Order'
  /orders/count:
    get:
      tags:
        - orders
      summary: Count all orders
      description: ""
      operationId: count-all-orders
      parameters: []
      deprecated: false
      responses:
        200:
          description: count of all orders
          content:
            text/plain:
              schema:
                type: number
    post:
      tags:
        - orders
      summary: Count queried orders
      description: ""
      operationId: count-queried-orders
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestQuery'
      deprecated: false
      responses:
        200:
          description: count of queried orders
          content:
            text/plain:
              schema:
                type: number
  /health/{serviceID}/live:
    get:
      tags:
        - health
      summary: Check liveness
      description: ""
      operationId: check-liveness
      parameters:
        - name: serviceID
          in: path
          description: ""
          required: true
          schema:
            type: string
      deprecated: false
      responses:
        200:
          description: Live
  /health/{serviceID}/ready:
    get:
      tags:
        - health
      summary: Check readiness
      description: ""
      operationId: check-readiness
      parameters:
        - name: serviceID
          in: path
          description: ""
          required: true
          schema:
            type: string
      deprecated: false
      responses:
        200:
          description: Ready
  /:
    servers: &cdn
      - description: Kicksware CDN Endpoint
        url: https://cdn.kicksware.com
    post:
      tags:
        - cdn
      summary: Upload content
      description: ""
      operationId: upload-content
      parameters: [ ]
      requestBody:
        content:
          image/png:
            schema:
              type: string
              format: binary
      deprecated: false
      responses:
        200:
          description: Success
  /{collection}/{filename}:
    servers: *cdn
    get:
      tags:
        - cdn
      summary: Provide original image
      description: ''
      operationId: provide-original-image
      parameters:
        - name: collection
          in: path
          description: ''
          required: true
          schema:
            type: string
        - name: filename
          in: path
          description: ''
          required: true
          schema:
            type: string
      deprecated: false
      responses:
        200:
          description: Image in PNG format
          content:
            image/png:
              schema:
                type: string
                format: binary
  /crop/{collection}/{filename}:
    servers: *cdn
    get:
      tags:
        - cdn
      summary: Provide cropped image
      description: ""
      operationId: provide-cropped-image
      parameters:
        - name: collection
          in: path
          description: ""
          required: true
          schema:
            type: string
        - name: filename
          in: path
          description: ""
          required: true
          schema:
            type: string
      deprecated: false
      responses:
        200:
          description: Image in PNG format
          content:
            image/png:
              schema:
                type: string
                format: binary
  /resize/{collection}/{filename}:
    servers: *cdn
    get:
      tags:
        - cdn
      summary: Provide resized image
      description: ""
      operationId: provide-resized-image
      parameters:
        - name: collection
          in: path
          description: ""
          required: true
          schema:
            type: string
        - name: filename
          in: path
          description: ""
          required: true
          schema:
            type: string
      deprecated: false
      responses:
        200:
          description: Image in PNG format
          content:
            image/png:
              schema:
                type: string
                format: binary
  /thumbnail/{collection}/{filename}:
    servers: *cdn
    get:
      tags:
        - cdn
      summary: Provide thumbnail
      description: ""
      operationId: provide-thumbnail
      parameters:
        - name: collection
          in: path
          description: ""
          required: true
          schema:
            type: string
        - name: filename
          in: path
          description: ""
          required: true
          schema:
            type: string
      deprecated: false
      responses:
        200:
          description: Image in PNG format
          content:
            image/png:
              schema:
                type: string
                format: binary

components:
  securitySchemes:
    jwt:
      type: apiKey
      in: query
      name: Authorization
      x-bearer-format: bearer
  schemas:
    RequestQuery:
      type: object
    User:
      type: object
    AuthToken:
      type: object
    SneakerReference:
      type: object
    SneakerProduct:
      type: object
    Order:
      type: object
security:
  - jwt: []