separate store swagger

This commit is contained in:
Kukks 2020-04-05 11:26:40 +02:00
parent 34c1a304a9
commit aeef160d0b
3 changed files with 225 additions and 5 deletions

View File

@ -111,12 +111,13 @@ namespace BTCPayServer.Tests
IList<ValidationError> errors;
bool valid = swagger.IsValid(schema, out errors);
//the schema is not fully compliant to the spec. We ARE allowed to have multiple security schemas.
if (!valid && errors.Count == 1 && errors.Any(error =>
error.Path == "components.securitySchemes.Basic" && error.ErrorType == ErrorType.OneOf))
var matchedError = errors.Where(error =>
error.Path == "components.securitySchemes.Basic" && error.ErrorType == ErrorType.OneOf).ToList();
foreach (ValidationError validationError in matchedError)
{
errors = new List<ValidationError>();
valid = true;
errors.Remove(validationError);
}
valid = !errors.Any();
Assert.Empty(errors);
Assert.True(valid);

View File

@ -67,7 +67,7 @@
"additionalProperties": {}
}
}
},
}
},
"securitySchemes": {
"API Key": {

View File

@ -0,0 +1,219 @@
{
"paths": {
"/api/v1/stores": {
"get": {
"tags": [
"Stores"
],
"summary": "Get stores",
"description": "View information about the available stores",
"operationId": "Stores_GetStores",
"responses": {
"200": {
"description": "list of stores",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StoreDataList"
}
}
}
}
},
"security": [
{
"API Key": [
"btcpay.store.canviewstoresettings"
],
"Basic": []
}
]
},
"post": {
"tags": [
"Stores"
],
"summary": "Create a new store",
"description": "Create a new store",
"requestBody": {
"x-name": "request",
"content": {
"application/json": {
"schema": {
"type": "object",
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"description": "The name of the new store",
"nullable": false
}
}
}
}
},
"required": true,
"x-position": 1
},
"responses": {
"200": {
"description": "Information about the new store",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StoreData"
}
}
}
},
"400": {
"description": "A list of errors that occurred when creating the store",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ValidationProblemDetails"
}
}
}
},
"403": {
"description": "If you are authenticated but forbidden to add new stores"
}
},
"security": [
{
"API Key": [
"btcpay.store.canmodifystoresettings"
],
"Basic": []
}
]
}
},
"/api/v1/stores/{storeId}": {
"get": {
"tags": [
"Stores"
],
"summary": "Get store",
"parameters": [
{
"name": "storeId",
"in": "path",
"required": true,
"description": "The store to fetch",
"schema": {
"type": "string"
}
}
],
"description": "View information about the specified store",
"operationId": "Stores_GetStore",
"responses": {
"200": {
"description": "specified store",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StoreData"
}
}
}
},
"403": {
"description": "If you are authenticated but forbidden to view the specified store"
},
"404": {
"description": "The key is not found for this store"
}
},
"security": [
{
"API Key": [
"btcpay.store.canviewstoresettings"
],
"Basic": []
}
]
},
"delete": {
"tags": [
"Stores"
],
"summary": "Remove Store",
"description": "Removes the specified store. If there is another user with access, only your access will be removed.",
"parameters": [
{
"name": "storeId",
"in": "path",
"required": true,
"description": "The store to remove",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "The store has been removed"
},
"400": {
"description": "A list of errors that occurred when removing the store",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ValidationProblemDetails"
}
}
}
},
"403": {
"description": "If you are authenticated but forbidden to remove the specified store"
},
"404": {
"description": "The key is not found for this store"
}
},
"security": [
{
"API Key": [
"btcpay.store.canmodifystoresettings"
],
"Basic": []
}
]
}
}
},
"components": {
"schemas": {
"StoreDataList": {
"type": "array",
"items": {
"$ref": "#/components/schemas/StoreData"
}
},
"StoreData": {
"type": "object",
"additionalProperties": false,
"properties": {
"id": {
"type": "string",
"description": "The id of the store",
"nullable": false
},
"name": {
"type": "string",
"description": "The name of the store",
"nullable": false
}
}
}
}
},
"tags": [
{
"name": "Stores"
}
]
}