Skip to content

Commit 7b8ec5e

Browse files
openapi specs
1 parent 88cd8b4 commit 7b8ec5e

File tree

6 files changed

+49
-162
lines changed

6 files changed

+49
-162
lines changed

packages/service-library/src/servicelib/rabbitmq/rpc_interfaces/webserver/licenses/licensed_items.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from models_library.api_schemas_webserver.licensed_items_checkouts import (
66
LicensedItemCheckoutRpcGet,
77
)
8+
from models_library.licenses import LicensedItemID
89
from models_library.products import ProductName
910
from models_library.rabbitmq_basic_types import RPCMethodName
1011
from models_library.resource_tracker_licensed_items_checkouts import (
@@ -71,16 +72,14 @@ async def checkout_licensed_item_for_wallet(
7172
product_name: ProductName,
7273
user_id: UserID,
7374
wallet_id: WalletID,
74-
key: str,
75-
version: str,
75+
licensed_item_id: LicensedItemID,
7676
num_of_seats: int,
7777
service_run_id: ServiceRunID,
7878
) -> LicensedItemCheckoutRpcGet:
7979
result = await rabbitmq_rpc_client.request(
8080
WEBSERVER_RPC_NAMESPACE,
8181
TypeAdapter(RPCMethodName).validate_python("checkout_licensed_item_for_wallet"),
82-
key=key,
83-
version=version,
82+
licensed_item_id=licensed_item_id,
8483
product_name=product_name,
8584
user_id=user_id,
8685
wallet_id=wallet_id,

services/api-server/openapi.json

Lines changed: 27 additions & 145 deletions
Original file line numberDiff line numberDiff line change
@@ -5322,147 +5322,6 @@
53225322
}
53235323
}
53245324
},
5325-
"/v0/wallets/{wallet_id}/licensed-items": {
5326-
"get": {
5327-
"tags": [
5328-
"wallets"
5329-
],
5330-
"summary": "Get Available Licensed Items For Wallet",
5331-
"description": "Get all available licensed items for a given wallet",
5332-
"operationId": "get_available_licensed_items_for_wallet",
5333-
"security": [
5334-
{
5335-
"HTTPBasic": []
5336-
}
5337-
],
5338-
"parameters": [
5339-
{
5340-
"name": "wallet_id",
5341-
"in": "path",
5342-
"required": true,
5343-
"schema": {
5344-
"type": "integer",
5345-
"title": "Wallet Id"
5346-
}
5347-
},
5348-
{
5349-
"name": "limit",
5350-
"in": "query",
5351-
"required": false,
5352-
"schema": {
5353-
"type": "integer",
5354-
"maximum": 100,
5355-
"minimum": 1,
5356-
"default": 50,
5357-
"title": "Limit"
5358-
}
5359-
},
5360-
{
5361-
"name": "offset",
5362-
"in": "query",
5363-
"required": false,
5364-
"schema": {
5365-
"type": "integer",
5366-
"minimum": 0,
5367-
"default": 0,
5368-
"title": "Offset"
5369-
}
5370-
}
5371-
],
5372-
"responses": {
5373-
"200": {
5374-
"description": "Successful Response",
5375-
"content": {
5376-
"application/json": {
5377-
"schema": {
5378-
"$ref": "#/components/schemas/Page_LicensedItemGet_"
5379-
}
5380-
}
5381-
}
5382-
},
5383-
"404": {
5384-
"description": "Wallet not found",
5385-
"content": {
5386-
"application/json": {
5387-
"schema": {
5388-
"$ref": "#/components/schemas/ErrorGet"
5389-
}
5390-
}
5391-
}
5392-
},
5393-
"403": {
5394-
"description": "Access to wallet is not allowed",
5395-
"content": {
5396-
"application/json": {
5397-
"schema": {
5398-
"$ref": "#/components/schemas/ErrorGet"
5399-
}
5400-
}
5401-
}
5402-
},
5403-
"429": {
5404-
"description": "Too many requests",
5405-
"content": {
5406-
"application/json": {
5407-
"schema": {
5408-
"$ref": "#/components/schemas/ErrorGet"
5409-
}
5410-
}
5411-
}
5412-
},
5413-
"500": {
5414-
"description": "Internal server error",
5415-
"content": {
5416-
"application/json": {
5417-
"schema": {
5418-
"$ref": "#/components/schemas/ErrorGet"
5419-
}
5420-
}
5421-
}
5422-
},
5423-
"502": {
5424-
"description": "Unexpected error when communicating with backend service",
5425-
"content": {
5426-
"application/json": {
5427-
"schema": {
5428-
"$ref": "#/components/schemas/ErrorGet"
5429-
}
5430-
}
5431-
}
5432-
},
5433-
"503": {
5434-
"description": "Service unavailable",
5435-
"content": {
5436-
"application/json": {
5437-
"schema": {
5438-
"$ref": "#/components/schemas/ErrorGet"
5439-
}
5440-
}
5441-
}
5442-
},
5443-
"504": {
5444-
"description": "Request to a backend service timed out.",
5445-
"content": {
5446-
"application/json": {
5447-
"schema": {
5448-
"$ref": "#/components/schemas/ErrorGet"
5449-
}
5450-
}
5451-
}
5452-
},
5453-
"422": {
5454-
"description": "Validation Error",
5455-
"content": {
5456-
"application/json": {
5457-
"schema": {
5458-
"$ref": "#/components/schemas/HTTPValidationError"
5459-
}
5460-
}
5461-
}
5462-
}
5463-
}
5464-
}
5465-
},
54665325
"/v0/wallets/{wallet_id}/licensed-items/{licensed_item_id}/checkout": {
54675326
"post": {
54685327
"tags": [
@@ -6618,6 +6477,14 @@
66186477
"format": "uuid",
66196478
"title": "Licensed Item Id"
66206479
},
6480+
"key": {
6481+
"type": "string",
6482+
"title": "Key"
6483+
},
6484+
"version": {
6485+
"type": "string",
6486+
"title": "Version"
6487+
},
66216488
"wallet_id": {
66226489
"type": "integer",
66236490
"exclusiveMinimum": true,
@@ -6660,6 +6527,8 @@
66606527
"required": [
66616528
"licensed_item_checkout_id",
66626529
"licensed_item_id",
6530+
"key",
6531+
"version",
66636532
"wallet_id",
66646533
"user_id",
66656534
"product_name",
@@ -6676,16 +6545,27 @@
66766545
"format": "uuid",
66776546
"title": "Licensed Item Id"
66786547
},
6548+
"key": {
6549+
"type": "string",
6550+
"title": "Key"
6551+
},
6552+
"version": {
6553+
"type": "string",
6554+
"title": "Version"
6555+
},
66796556
"display_name": {
66806557
"type": "string",
66816558
"title": "Display Name"
66826559
},
66836560
"licensed_resource_type": {
66846561
"$ref": "#/components/schemas/LicensedResourceType"
66856562
},
6686-
"licensed_resource_data": {
6687-
"type": "object",
6688-
"title": "Licensed Resource Data"
6563+
"licensed_resources": {
6564+
"items": {
6565+
"type": "object"
6566+
},
6567+
"type": "array",
6568+
"title": "Licensed Resources"
66896569
},
66906570
"pricing_plan_id": {
66916571
"type": "integer",
@@ -6707,9 +6587,11 @@
67076587
"type": "object",
67086588
"required": [
67096589
"licensed_item_id",
6590+
"key",
6591+
"version",
67106592
"display_name",
67116593
"licensed_resource_type",
6712-
"licensed_resource_data",
6594+
"licensed_resources",
67136595
"pricing_plan_id",
67146596
"created_at",
67156597
"modified_at"

services/api-server/src/simcore_service_api_server/models/schemas/model_adapter.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,9 +137,11 @@ class ServicePricingPlanGetLegacy(BaseModel):
137137

138138
class LicensedItemGet(BaseModel):
139139
licensed_item_id: LicensedItemID
140+
key: str
141+
version: str
140142
display_name: str
141143
licensed_resource_type: LicensedResourceType
142-
licensed_resource_data: dict[str, Any]
144+
licensed_resources: list[dict[str, Any]]
143145
pricing_plan_id: PricingPlanId
144146
created_at: datetime
145147
modified_at: datetime
@@ -156,6 +158,8 @@ class LicensedItemGet(BaseModel):
156158
class LicensedItemCheckoutGet(BaseModel):
157159
licensed_item_checkout_id: LicensedItemCheckoutID
158160
licensed_item_id: LicensedItemID
161+
key: str
162+
version: str
159163
wallet_id: WalletID
160164
user_id: UserID
161165
product_name: ProductName

services/web/server/src/simcore_service_webserver/api/v0/openapi.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14865,13 +14865,17 @@ components:
1486514865
- type: string
1486614866
- type: 'null'
1486714867
title: Doi
14868+
licenseVersion:
14869+
type: string
14870+
title: Licenseversion
1486814871
type: object
1486914872
required:
1487014873
- id
1487114874
- description
1487214875
- thumbnail
1487314876
- features
1487414877
- doi
14878+
- licenseVersion
1487514879
title: _ItisVipRestData
1487614880
_PageParams:
1487714881
properties:

services/web/server/src/simcore_service_webserver/licenses/_licensed_items_checkouts_service.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from models_library.api_schemas_resource_usage_tracker import (
33
licensed_items_checkouts as rut_licensed_items_checkouts,
44
)
5+
from models_library.licenses import LicensedItemID
56
from models_library.products import ProductName
67
from models_library.resource_tracker_licensed_items_checkouts import (
78
LicensedItemCheckoutID,
@@ -122,8 +123,7 @@ async def checkout_licensed_item_for_wallet(
122123
wallet_id: WalletID,
123124
user_id: UserID,
124125
# checkout args
125-
key: str,
126-
version: str,
126+
licensed_item_id: LicensedItemID,
127127
num_of_seats: int,
128128
service_run_id: ServiceRunID,
129129
) -> LicensedItemCheckoutGet:
@@ -137,17 +137,17 @@ async def checkout_licensed_item_for_wallet(
137137

138138
user = await get_user(app, user_id=user_id)
139139

140-
licensed_item = await _licensed_items_repository.get_licensed_item_by_key_version(
141-
app, key=key, version=version, product_name=product_name
140+
licensed_item_db = await _licensed_items_repository.get(
141+
app, licensed_item_id=licensed_item_id, product_name=product_name
142142
)
143143

144144
rpc_client = get_rabbitmq_rpc_client(app)
145145
licensed_item_get: rut_licensed_items_checkouts.LicensedItemCheckoutGet = (
146146
await licensed_items_checkouts.checkout_licensed_item(
147147
rpc_client,
148-
licensed_item_id=licensed_item.licensed_item_id,
149-
key=key,
150-
version=version,
148+
licensed_item_id=licensed_item_db.licensed_item_id,
149+
key=licensed_item_db.key,
150+
version=licensed_item_db.version,
151151
wallet_id=wallet_id,
152152
product_name=product_name,
153153
num_of_seats=num_of_seats,

services/web/server/src/simcore_service_webserver/licenses/_rpc.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
LicensedItemCheckoutRpcGet,
99
)
1010
from models_library.basic_types import IDStr
11-
from models_library.licenses import LicensedItemPage
11+
from models_library.licenses import LicensedItemID, LicensedItemPage
1212
from models_library.products import ProductName
1313
from models_library.resource_tracker_licensed_items_checkouts import (
1414
LicensedItemCheckoutID,
@@ -96,18 +96,16 @@ async def checkout_licensed_item_for_wallet(
9696
product_name: ProductName,
9797
user_id: UserID,
9898
wallet_id: WalletID,
99-
key: str,
100-
version: str,
99+
licensed_item_id: LicensedItemID,
101100
num_of_seats: int,
102101
service_run_id: ServiceRunID,
103102
) -> LicensedItemCheckoutRpcGet:
104103
licensed_item_get = (
105104
await _licensed_items_checkouts_service.checkout_licensed_item_for_wallet(
106105
app,
107-
key=key,
108-
version=version,
109106
wallet_id=wallet_id,
110107
product_name=product_name,
108+
licensed_item_id=licensed_item_id,
111109
num_of_seats=num_of_seats,
112110
service_run_id=service_run_id,
113111
user_id=user_id,

0 commit comments

Comments
 (0)