144 lines
3.9 KiB
YAML
144 lines
3.9 KiB
YAML
swagger: "2.0"
|
|
info:
|
|
title: Mainflux authentication service
|
|
description: HTTP API for managing platform API keys.
|
|
version: "1.0.0"
|
|
consumes:
|
|
- "application/json"
|
|
produces:
|
|
- "application/json"
|
|
paths:
|
|
/keys:
|
|
post:
|
|
summary: Issue API key
|
|
description: |
|
|
Generates a new API key. Thew new API key will
|
|
be uniquely identified by its ID.
|
|
tags:
|
|
- authn
|
|
parameters:
|
|
- name: key
|
|
description: JSON-formatted document describing the new key.
|
|
in: body
|
|
schema:
|
|
$ref: "#/definitions/KeyRequest"
|
|
required: true
|
|
responses:
|
|
201:
|
|
description: Issued new key.
|
|
400:
|
|
description: Failed due to malformed JSON.
|
|
409:
|
|
description: Failed due to using already existing ID.
|
|
415:
|
|
description: Missing or invalid content type.
|
|
500:
|
|
$ref: "#/responses/ServiceError"
|
|
/keys/{id}:
|
|
get:
|
|
summary: Gets API key details.
|
|
description: |
|
|
Gets API key details for the given key.
|
|
tags:
|
|
- authn
|
|
parameters:
|
|
- $ref: "#/parameters/Authorization"
|
|
- name: id
|
|
description: API Key id.
|
|
in: path
|
|
type: string
|
|
required: true
|
|
responses:
|
|
200:
|
|
description: Data retrieved.
|
|
schema:
|
|
$ref: "#/definitions/Key"
|
|
400:
|
|
description: Failed due to malformed query parameters.
|
|
403:
|
|
description: Missing or invalid access token provided.
|
|
500:
|
|
$ref: "#/responses/ServiceError"
|
|
delete:
|
|
summary: Revoke API key
|
|
description: |
|
|
Revoke API key identified by the given ID.
|
|
tags:
|
|
- authn
|
|
parameters:
|
|
- $ref: "#/parameters/Authorization"
|
|
- name: id
|
|
description: API Key id.
|
|
in: path
|
|
type: string
|
|
required: true
|
|
responses:
|
|
204:
|
|
description: Key revoked.
|
|
403:
|
|
description: Missing or invalid access token provided.
|
|
500:
|
|
$ref: "#/responses/ServiceError"
|
|
|
|
definitions:
|
|
Key:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
format: uuid
|
|
example: "c5747f2f-2a7c-4fe1-b41a-51a5ae290945"
|
|
description: API key unique identifier
|
|
type:
|
|
type: integer
|
|
example: 0
|
|
description: API key type. Keys of different type are processed differently
|
|
issuer:
|
|
type: string
|
|
format: string
|
|
example: "test@example.com"
|
|
description: User's email or service identifier of API key issuer
|
|
secret:
|
|
type: string
|
|
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiZXhhbXBsZSIsImlhdCI6MTUxNjIzOTAyMn0.9UYAFWmPIn4ojss36LpIGSqABZHfADQmVuKQ4PJBMdI
|
|
description: API Key value.
|
|
issued_at:
|
|
type: string
|
|
format: date-time
|
|
example: "2019-11-26 13:31:52"
|
|
description: Time when the key is generated
|
|
expires_at:
|
|
type: string
|
|
format: date-time
|
|
example: "2019-11-26 13:31:52"
|
|
description: Time when the Key expires
|
|
KeyRequest:
|
|
type: object
|
|
properties:
|
|
type:
|
|
type: integer
|
|
example: 0
|
|
description: API key type. Keys of different type are processed differently
|
|
issuer:
|
|
type: string
|
|
format: e-mail
|
|
example: "test@example.com"
|
|
description: User's email or service identifier of API key issuer
|
|
duration:
|
|
type: number
|
|
format: integer
|
|
example: 23456
|
|
description: Number of seconds issued token is valid for.
|
|
|
|
parameters:
|
|
Authorization:
|
|
name: Authorization
|
|
description: Login key secret (User's access token).
|
|
in: header
|
|
type: string
|
|
required: true
|
|
|
|
responses:
|
|
ServiceError:
|
|
description: Unexpected server-side error occurred.
|