2021-06-22 22:52:48 +02:00
{
"swagger" : "2.0" ,
"info" : {
"description" : "This is a tiny http API for auth. Register accounts, auth with api-key or name/password, renew JWT tokens..." ,
"title" : "JWT Auth API" ,
"contact" : {
"name" : "Power Plan" ,
2021-06-22 23:49:11 +02:00
"url" : "https://pwrpln.com/" ,
2021-06-22 22:52:48 +02:00
"email" : "lilleman@larvit.se"
} ,
"license" : {
"name" : "MIT"
} ,
"version" : "0.1"
} ,
"basePath" : "/" ,
"paths" : {
"/account" : {
"post" : {
2021-06-22 23:49:11 +02:00
"description" : "Requires Authorization-header with role \"admin\".\nExample: Authorization: bearer xxx\nWhere \"xxx\" is a valid JWT token" ,
2021-06-22 22:52:48 +02:00
"consumes" : [
"application/json"
] ,
"produces" : [
"application/json"
] ,
"summary" : "Create an account" ,
"operationId" : "account-create" ,
2021-06-22 23:49:11 +02:00
"parameters" : [
{
"description" : "Account object to be written to database" ,
"name" : "body" ,
"in" : "body" ,
"required" : true ,
"schema" : {
"$ref" : "#/definitions/handlers.AccountInput"
}
}
] ,
2021-06-22 22:52:48 +02:00
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/db.CreatedAccount"
}
} ,
"401" : {
"description" : "Unauthorized" ,
"schema" : {
2021-06-22 23:49:11 +02:00
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/handlers.ResJSONError"
}
2021-06-22 22:52:48 +02:00
}
} ,
"403" : {
"description" : "Forbidden" ,
"schema" : {
2021-06-22 23:49:11 +02:00
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/handlers.ResJSONError"
}
2021-06-22 22:52:48 +02:00
}
} ,
"415" : {
"description" : "Unsupported Media Type" ,
"schema" : {
2021-06-22 23:49:11 +02:00
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/handlers.ResJSONError"
}
2021-06-22 22:52:48 +02:00
}
} ,
"500" : {
"description" : "Internal Server Error" ,
"schema" : {
2021-06-22 23:49:11 +02:00
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/handlers.ResJSONError"
}
2021-06-22 22:52:48 +02:00
}
}
}
}
} ,
"/account/{id}" : {
"get" : {
2021-06-22 23:49:11 +02:00
"description" : "Requires Authorization-header with either role \"admin\" or with a matching account id.\nExample: Authorization: bearer xxx\nWhere \"xxx\" is a valid JWT token" ,
2021-06-22 22:52:48 +02:00
"consumes" : [
"application/json"
] ,
"produces" : [
"application/json"
] ,
2021-06-22 23:49:11 +02:00
"summary" : "Get account by id" ,
2021-06-22 22:52:48 +02:00
"operationId" : "get-account-by-id" ,
"parameters" : [
{
"type" : "string" ,
"description" : "Account ID" ,
"name" : "id" ,
"in" : "path" ,
"required" : true
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/db.Account"
}
} ,
"401" : {
"description" : "Unauthorized" ,
"schema" : {
2021-06-22 23:49:11 +02:00
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/handlers.ResJSONError"
}
2021-06-22 22:52:48 +02:00
}
} ,
"403" : {
"description" : "Forbidden" ,
"schema" : {
2021-06-22 23:49:11 +02:00
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/handlers.ResJSONError"
}
2021-06-22 22:52:48 +02:00
}
} ,
"415" : {
"description" : "Unsupported Media Type" ,
"schema" : {
2021-06-22 23:49:11 +02:00
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/handlers.ResJSONError"
}
2021-06-22 22:52:48 +02:00
}
} ,
"500" : {
"description" : "Internal Server Error" ,
"schema" : {
2021-06-22 23:49:11 +02:00
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/handlers.ResJSONError"
}
2021-06-22 22:52:48 +02:00
}
}
}
}
} ,
"/auth/api-key" : {
"post" : {
"description" : "Authenticate account by API Key" ,
"consumes" : [
"application/json"
] ,
"produces" : [
"application/json"
] ,
"summary" : "Authenticate account by API Key" ,
"operationId" : "auth-account-by-api-key" ,
2021-06-22 23:49:11 +02:00
"parameters" : [
{
"description" : "API Key as a string in JSON format (just encapsulate the string with \\" ,
"name" : "body" ,
"in" : "body" ,
"required" : true ,
"schema" : {
"type" : "string"
}
}
] ,
2021-06-22 22:52:48 +02:00
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
2021-06-22 23:49:11 +02:00
"$ref" : "#/definitions/handlers.ResToken"
2021-06-22 22:52:48 +02:00
}
} ,
"401" : {
"description" : "Unauthorized" ,
"schema" : {
2021-06-22 23:49:11 +02:00
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/handlers.ResJSONError"
}
2021-06-22 22:52:48 +02:00
}
} ,
"403" : {
"description" : "Forbidden" ,
"schema" : {
2021-06-22 23:49:11 +02:00
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/handlers.ResJSONError"
}
2021-06-22 22:52:48 +02:00
}
} ,
"415" : {
"description" : "Unsupported Media Type" ,
"schema" : {
2021-06-22 23:49:11 +02:00
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/handlers.ResJSONError"
}
2021-06-22 22:52:48 +02:00
}
} ,
"500" : {
"description" : "Internal Server Error" ,
"schema" : {
2021-06-22 23:49:11 +02:00
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/handlers.ResJSONError"
}
2021-06-22 22:52:48 +02:00
}
}
}
}
} ,
"/auth/password" : {
"post" : {
"description" : "Authenticate account by Password" ,
"consumes" : [
"application/json"
] ,
"produces" : [
"application/json"
] ,
"summary" : "Authenticate account by Password" ,
"operationId" : "auth-account-by-password" ,
2021-06-22 23:49:11 +02:00
"parameters" : [
{
"description" : "Name and password to auth by" ,
"name" : "body" ,
"in" : "body" ,
"required" : true ,
"schema" : {
"$ref" : "#/definitions/handlers.AuthInput"
}
}
] ,
2021-06-22 22:52:48 +02:00
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
2021-06-22 23:49:11 +02:00
"$ref" : "#/definitions/handlers.ResToken"
2021-06-22 22:52:48 +02:00
}
} ,
"401" : {
"description" : "Unauthorized" ,
"schema" : {
2021-06-22 23:49:11 +02:00
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/handlers.ResJSONError"
}
2021-06-22 22:52:48 +02:00
}
} ,
"403" : {
"description" : "Forbidden" ,
"schema" : {
2021-06-22 23:49:11 +02:00
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/handlers.ResJSONError"
}
2021-06-22 22:52:48 +02:00
}
} ,
"415" : {
"description" : "Unsupported Media Type" ,
"schema" : {
2021-06-22 23:49:11 +02:00
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/handlers.ResJSONError"
}
2021-06-22 22:52:48 +02:00
}
} ,
"500" : {
"description" : "Internal Server Error" ,
"schema" : {
2021-06-22 23:49:11 +02:00
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/handlers.ResJSONError"
}
2021-06-22 22:52:48 +02:00
}
}
}
}
} ,
"/renew-token" : {
"post" : {
"description" : "Renew token" ,
"consumes" : [
"application/json"
] ,
"produces" : [
"application/json"
] ,
"summary" : "Renew token" ,
"operationId" : "renew-token" ,
2021-06-22 23:49:11 +02:00
"parameters" : [
{
"description" : "Renewal token as a string in JSON format (just encapsulate the string with \\" ,
"name" : "body" ,
"in" : "body" ,
"required" : true ,
"schema" : {
"type" : "string"
}
}
] ,
2021-06-22 22:52:48 +02:00
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
2021-06-22 23:49:11 +02:00
"$ref" : "#/definitions/handlers.ResToken"
2021-06-22 22:52:48 +02:00
}
} ,
"401" : {
"description" : "Unauthorized" ,
"schema" : {
2021-06-22 23:49:11 +02:00
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/handlers.ResJSONError"
}
2021-06-22 22:52:48 +02:00
}
} ,
"403" : {
"description" : "Forbidden" ,
"schema" : {
2021-06-22 23:49:11 +02:00
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/handlers.ResJSONError"
}
2021-06-22 22:52:48 +02:00
}
} ,
"415" : {
"description" : "Unsupported Media Type" ,
"schema" : {
2021-06-22 23:49:11 +02:00
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/handlers.ResJSONError"
}
2021-06-22 22:52:48 +02:00
}
} ,
"500" : {
"description" : "Internal Server Error" ,
"schema" : {
2021-06-22 23:49:11 +02:00
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/handlers.ResJSONError"
}
2021-06-22 22:52:48 +02:00
}
}
}
}
}
} ,
"definitions" : {
"db.Account" : {
"type" : "object" ,
"properties" : {
"created" : {
"type" : "string"
} ,
"fields" : {
"type" : "object" ,
"additionalProperties" : {
"type" : "array" ,
"items" : {
"type" : "string"
}
}
} ,
"id" : {
"type" : "string"
} ,
"name" : {
"type" : "string"
}
}
} ,
2021-06-22 23:49:11 +02:00
"db.AccountCreateInputFields" : {
"type" : "object" ,
"properties" : {
"name" : {
"type" : "string"
} ,
"values" : {
"type" : "array" ,
"items" : {
"type" : "string"
}
}
}
} ,
2021-06-22 22:52:48 +02:00
"db.CreatedAccount" : {
"type" : "object" ,
"properties" : {
"apiKey" : {
"type" : "string"
} ,
"id" : {
"type" : "string"
} ,
"name" : {
"type" : "string"
}
}
} ,
2021-06-22 23:49:11 +02:00
"handlers.AccountInput" : {
"type" : "object" ,
"properties" : {
"fields" : {
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/db.AccountCreateInputFields"
}
} ,
"name" : {
"type" : "string"
} ,
"password" : {
"type" : "string"
}
}
} ,
"handlers.AuthInput" : {
"type" : "object" ,
"properties" : {
"name" : {
"type" : "string"
} ,
"password" : {
"type" : "string"
}
}
} ,
2021-06-22 22:52:48 +02:00
"handlers.ResJSONError" : {
"type" : "object" ,
"properties" : {
"error" : {
"type" : "string"
} ,
"field" : {
"type" : "string"
}
}
2021-06-22 23:49:11 +02:00
} ,
"handlers.ResToken" : {
"type" : "object" ,
"properties" : {
"jwt" : {
"type" : "string"
} ,
"renewalToken" : {
"type" : "string"
}
}
2021-06-22 22:52:48 +02:00
}
}
}