basePath: / definitions: db.Account: properties: created: type: string fields: additionalProperties: items: type: string type: array type: object id: type: string name: type: string type: object db.AccountCreateInputFields: properties: name: type: string values: items: type: string type: array type: object db.CreatedAccount: properties: apiKey: type: string id: type: string name: type: string type: object handlers.AccountInput: properties: fields: items: $ref: '#/definitions/db.AccountCreateInputFields' type: array name: type: string password: type: string type: object handlers.AuthInput: properties: name: type: string password: type: string type: object handlers.ResJSONError: properties: error: type: string field: type: string type: object handlers.ResToken: properties: jwt: type: string renewalToken: type: string type: object info: contact: email: lilleman@larvit.se name: Power Plan url: https://pwrpln.com/ description: This is a tiny http API for auth. Register accounts, auth with api-key or name/password, renew JWT tokens... license: name: MIT title: JWT Auth API version: "0.1" paths: /accounts: get: consumes: - application/json description: |- Requires Authorization-header with role "admin". Example: Authorization: bearer xxx Where "xxx" is a valid JWT token produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/db.Account' type: array "401": description: Unauthorized schema: items: $ref: '#/definitions/handlers.ResJSONError' type: array "403": description: Forbidden schema: items: $ref: '#/definitions/handlers.ResJSONError' type: array "415": description: Unsupported Media Type schema: items: $ref: '#/definitions/handlers.ResJSONError' type: array "500": description: Internal Server Error schema: items: $ref: '#/definitions/handlers.ResJSONError' type: array summary: Get accounts post: consumes: - application/json description: |- Requires Authorization-header with role "admin". Example: Authorization: bearer xxx Where "xxx" is a valid JWT token operationId: account-create parameters: - description: Account object to be written to database in: body name: body required: true schema: $ref: '#/definitions/handlers.AccountInput' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/db.CreatedAccount' "400": description: Bad Request schema: items: $ref: '#/definitions/handlers.ResJSONError' type: array "401": description: Unauthorized schema: items: $ref: '#/definitions/handlers.ResJSONError' type: array "403": description: Forbidden schema: items: $ref: '#/definitions/handlers.ResJSONError' type: array "409": description: Conflict schema: items: $ref: '#/definitions/handlers.ResJSONError' type: array "415": description: Unsupported Media Type schema: items: $ref: '#/definitions/handlers.ResJSONError' type: array "500": description: Internal Server Error schema: items: $ref: '#/definitions/handlers.ResJSONError' type: array summary: Create an account /accounts/:id: delete: consumes: - application/json description: |- Requires Authorization-header with role "admin" or a matching account id Example: Authorization: bearer xxx Where "xxx" is a valid JWT token operationId: account-del parameters: - description: Account ID in: path name: id required: true type: string produces: - application/json responses: "204": description: No Content schema: type: string "400": description: Bad Request schema: items: $ref: '#/definitions/handlers.ResJSONError' type: array "401": description: Unauthorized schema: items: $ref: '#/definitions/handlers.ResJSONError' type: array "403": description: Forbidden schema: items: $ref: '#/definitions/handlers.ResJSONError' type: array "404": description: Not Found schema: items: $ref: '#/definitions/handlers.ResJSONError' type: array "415": description: Unsupported Media Type schema: items: $ref: '#/definitions/handlers.ResJSONError' type: array "500": description: Internal Server Error schema: items: $ref: '#/definitions/handlers.ResJSONError' type: array summary: Delete an account /accounts/{id}: get: consumes: - application/json description: |- Requires Authorization-header with either role "admin" or with a matching account id. Example: Authorization: bearer xxx Where "xxx" is a valid JWT token operationId: get-account-by-id parameters: - description: Account ID in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/db.Account' "401": description: Unauthorized schema: items: $ref: '#/definitions/handlers.ResJSONError' type: array "403": description: Forbidden schema: items: $ref: '#/definitions/handlers.ResJSONError' type: array "415": description: Unsupported Media Type schema: items: $ref: '#/definitions/handlers.ResJSONError' type: array "500": description: Internal Server Error schema: items: $ref: '#/definitions/handlers.ResJSONError' type: array summary: Get account by id /accounts/{id}/fields: put: consumes: - application/json description: |- Requires Authorization-header with role "admin". Example: Authorization: bearer xxx Where "xxx" is a valid JWT token operationId: account-update-fields parameters: - description: Fields array with objects to be written to database in: body name: body required: true schema: items: $ref: '#/definitions/db.AccountCreateInputFields' type: array produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/db.Account' "400": description: Bad Request schema: items: $ref: '#/definitions/handlers.ResJSONError' type: array "401": description: Unauthorized schema: items: $ref: '#/definitions/handlers.ResJSONError' type: array "403": description: Forbidden schema: items: $ref: '#/definitions/handlers.ResJSONError' type: array "415": description: Unsupported Media Type schema: items: $ref: '#/definitions/handlers.ResJSONError' type: array "500": description: Internal Server Error schema: items: $ref: '#/definitions/handlers.ResJSONError' type: array summary: Update account fields /auth/api-key: post: consumes: - application/json description: Authenticate account by API Key operationId: auth-account-by-api-key parameters: - description: API Key as a string in JSON format (just encapsulate the string with \ in: body name: body required: true schema: type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/handlers.ResToken' "401": description: Unauthorized schema: items: $ref: '#/definitions/handlers.ResJSONError' type: array "403": description: Forbidden schema: items: $ref: '#/definitions/handlers.ResJSONError' type: array "415": description: Unsupported Media Type schema: items: $ref: '#/definitions/handlers.ResJSONError' type: array "500": description: Internal Server Error schema: items: $ref: '#/definitions/handlers.ResJSONError' type: array summary: Authenticate account by API Key /auth/password: post: consumes: - application/json description: Authenticate account by Password operationId: auth-account-by-password parameters: - description: Name and password to auth by in: body name: body required: true schema: $ref: '#/definitions/handlers.AuthInput' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/handlers.ResToken' "401": description: Unauthorized schema: items: $ref: '#/definitions/handlers.ResJSONError' type: array "403": description: Forbidden schema: items: $ref: '#/definitions/handlers.ResJSONError' type: array "415": description: Unsupported Media Type schema: items: $ref: '#/definitions/handlers.ResJSONError' type: array "500": description: Internal Server Error schema: items: $ref: '#/definitions/handlers.ResJSONError' type: array summary: Authenticate account by Password /renew-token: post: consumes: - application/json description: Renew token operationId: renew-token parameters: - description: Renewal token as a string in JSON format (just encapsulate the string with \ in: body name: body required: true schema: type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/handlers.ResToken' "401": description: Unauthorized schema: items: $ref: '#/definitions/handlers.ResJSONError' type: array "403": description: Forbidden schema: items: $ref: '#/definitions/handlers.ResJSONError' type: array "415": description: Unsupported Media Type schema: items: $ref: '#/definitions/handlers.ResJSONError' type: array "500": description: Internal Server Error schema: items: $ref: '#/definitions/handlers.ResJSONError' type: array summary: Renew token swagger: "2.0"