Skip to content

Commit de295c5

Browse files
Update openapi.json
Synced from CyberDrain/CIPP@b0a0366
1 parent eda79f9 commit de295c5

12 files changed

Lines changed: 1780 additions & 0 deletions

Config/LicensePricingDefaults.csv

Lines changed: 476 additions & 0 deletions
Large diffs are not rendered by default.

Config/openapi.json

Lines changed: 258 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23629,6 +23629,123 @@
2362923629
"x-cipp-any-tenant": true
2363023630
}
2363123631
},
23632+
"/api/ExecLicensePricing": {
23633+
"post": {
23634+
"summary": "ExecLicensePricing",
23635+
"operationId": "ExecLicensePricing",
23636+
"tags": [
23637+
"Tenant > Reports"
23638+
],
23639+
"description": "Manage MSP-global license price overrides used by the license optimization report.\nSetPrice upserts a per-SKU monthly price; RemovePrice deletes an override so the SKU falls\nback to the shipped MSRP estimate.",
23640+
"requestBody": {
23641+
"required": true,
23642+
"content": {
23643+
"application/json": {
23644+
"schema": {
23645+
"type": "object",
23646+
"properties": {
23647+
"Action": {
23648+
"type": "string",
23649+
"enum": [
23650+
"RemovePrice",
23651+
"SetPrice"
23652+
],
23653+
"description": "SetPrice or RemovePrice"
23654+
},
23655+
"Currency": {
23656+
"type": "string",
23657+
"description": "Overrides are currency-scoped: one row per (skuId, currency), so an AUD override and a USD override for the same SKU coexist. RowKey = \"{skuId}-{currency}\"."
23658+
},
23659+
"MonthlyPrice": {
23660+
"type": "number",
23661+
"description": "Monthly price per seat, in the given currency"
23662+
},
23663+
"Product_Display_Name": {
23664+
"type": "string"
23665+
},
23666+
"skuId": {
23667+
"type": "string",
23668+
"description": "The SKU GUID (skuId) the price applies to"
23669+
},
23670+
"skuPartNumber": {
23671+
"type": "string"
23672+
}
23673+
},
23674+
"required": [
23675+
"Action"
23676+
]
23677+
}
23678+
}
23679+
}
23680+
},
23681+
"responses": {
23682+
"200": {
23683+
"description": "Success",
23684+
"content": {
23685+
"application/json": {
23686+
"schema": {
23687+
"type": "object",
23688+
"description": "Derived from the fields written into the storage table it reads. Fields taken from the storage writers may be omitted by this endpoint, and the response may carry computed fields not listed here.",
23689+
"properties": {
23690+
"Currency": {
23691+
"x-cipp-field-source": "storage"
23692+
},
23693+
"ETag": {
23694+
"type": "string",
23695+
"x-cipp-field-source": "storage"
23696+
},
23697+
"MonthlyPrice": {
23698+
"type": "number",
23699+
"x-cipp-field-source": "storage"
23700+
},
23701+
"PartitionKey": {
23702+
"x-cipp-field-source": "storage"
23703+
},
23704+
"Product_Display_Name": {
23705+
"type": "string",
23706+
"x-cipp-field-source": "storage"
23707+
},
23708+
"RowKey": {
23709+
"x-cipp-field-source": "storage"
23710+
},
23711+
"skuId": {
23712+
"x-cipp-field-source": "storage"
23713+
},
23714+
"skuPartNumber": {
23715+
"type": "string",
23716+
"x-cipp-field-source": "storage"
23717+
},
23718+
"Timestamp": {
23719+
"type": "string",
23720+
"x-cipp-field-source": "storage"
23721+
}
23722+
}
23723+
}
23724+
}
23725+
}
23726+
},
23727+
"400": {
23728+
"description": "Bad request - missing required field or invalid input"
23729+
},
23730+
"401": {
23731+
"description": "Unauthorized - invalid or missing bearer token"
23732+
},
23733+
"403": {
23734+
"description": "Forbidden - caller lacks the required RBAC role"
23735+
},
23736+
"500": {
23737+
"description": "Internal server error"
23738+
}
23739+
},
23740+
"security": [
23741+
{
23742+
"bearerAuth": []
23743+
}
23744+
],
23745+
"x-cipp-role": "Tenant.Directory.ReadWrite",
23746+
"x-cipp-any-tenant": true
23747+
}
23748+
},
2363223749
"/api/ExecLicenseSearch": {
2363323750
"post": {
2363423751
"summary": "ExecLicenseSearch",
@@ -48002,6 +48119,147 @@
4800248119
"x-cipp-any-tenant": true
4800348120
}
4800448121
},
48122+
"/api/ListLicenseOptimization": {
48123+
"get": {
48124+
"summary": "ListLicenseOptimization",
48125+
"operationId": "ListLicenseOptimization",
48126+
"tags": [
48127+
"Tenant > Reports"
48128+
],
48129+
"description": "License cost-optimization report for a tenant: a monetary summary plus reclaim\nopportunities across five waste tiers (unassigned seats, disabled and inactive licensed\naccounts, mailbox-only downgrade candidates, and redundant overlapping SKUs). Computed from\nthe reporting-DB cache. For tenantFilter=AllTenants it returns a per-tenant summary money\nmap (ranked by reclaimable spend) instead of the full opportunity detail.",
48130+
"parameters": [
48131+
{
48132+
"name": "currency",
48133+
"in": "query",
48134+
"description": "Currency the money figures are resolved in (ISO code); defaults to USD",
48135+
"required": false,
48136+
"schema": {
48137+
"type": "string"
48138+
}
48139+
},
48140+
{
48141+
"name": "inactiveDays",
48142+
"in": "query",
48143+
"description": "Sign-in age in days past which an enabled licensed user counts as inactive (default 90)",
48144+
"required": false,
48145+
"schema": {
48146+
"type": "string"
48147+
}
48148+
},
48149+
{
48150+
"name": "tenantFilter",
48151+
"in": "query",
48152+
"description": "The tenant to report on, or AllTenants for the cross-tenant summary money map",
48153+
"required": true,
48154+
"schema": {
48155+
"type": "string"
48156+
}
48157+
}
48158+
],
48159+
"responses": {
48160+
"200": {
48161+
"description": "Success",
48162+
"content": {
48163+
"application/json": {
48164+
"schema": {
48165+
"type": "array",
48166+
"items": {
48167+
"type": "object",
48168+
"description": "Not described statically: this endpoint returns the upstream response as-is, so its fields are determined by the upstream API rather than by CIPP. Call the endpoint to see the actual shape, or add a response schema in backend/Config/openapi-overrides."
48169+
}
48170+
}
48171+
}
48172+
}
48173+
},
48174+
"401": {
48175+
"description": "Unauthorized - invalid or missing bearer token"
48176+
},
48177+
"403": {
48178+
"description": "Forbidden - caller lacks the required RBAC role"
48179+
}
48180+
},
48181+
"security": [
48182+
{
48183+
"bearerAuth": []
48184+
}
48185+
],
48186+
"x-cipp-role": "Tenant.Directory.Read",
48187+
"x-cipp-any-tenant": true
48188+
}
48189+
},
48190+
"/api/ListLicensePricing": {
48191+
"get": {
48192+
"summary": "ListLicensePricing",
48193+
"operationId": "ListLicensePricing",
48194+
"tags": [
48195+
"Tenant > Reports"
48196+
],
48197+
"description": "Lists the resolved monthly price for every known license SKU: MSP price overrides merged\nover the shipped MSRP estimates. Consumed by the license optimization report and its\nprice-management UI. Each row carries a Source of Override, Estimate, or Unknown.\n\nPrices are resolved in the requested currency (?currency=, default USD). The response also\ncarries the list of currencies present in the price data so the UI can offer a selector.",
48198+
"parameters": [
48199+
{
48200+
"name": "currency",
48201+
"in": "query",
48202+
"description": "Currency to resolve prices in (ISO code); defaults to USD",
48203+
"required": false,
48204+
"schema": {
48205+
"type": "string"
48206+
}
48207+
}
48208+
],
48209+
"responses": {
48210+
"200": {
48211+
"description": "Success",
48212+
"content": {
48213+
"application/json": {
48214+
"schema": {
48215+
"type": "array",
48216+
"items": {
48217+
"type": "object",
48218+
"description": "Derived from the columns the CIPP UI renders. The response may carry more; these are the ones known to exist.",
48219+
"properties": {
48220+
"Currency": {
48221+
"x-cipp-field-source": "frontend"
48222+
},
48223+
"MonthlyPrice": {
48224+
"x-cipp-field-source": "frontend"
48225+
},
48226+
"Product_Display_Name": {
48227+
"x-cipp-field-source": "frontend"
48228+
},
48229+
"skuId": {
48230+
"x-cipp-field-source": "frontend"
48231+
},
48232+
"skuPartNumber": {
48233+
"x-cipp-field-source": "frontend"
48234+
},
48235+
"Source": {
48236+
"x-cipp-field-source": "frontend"
48237+
}
48238+
}
48239+
}
48240+
}
48241+
}
48242+
}
48243+
},
48244+
"401": {
48245+
"description": "Unauthorized - invalid or missing bearer token"
48246+
},
48247+
"403": {
48248+
"description": "Forbidden - caller lacks the required RBAC role"
48249+
},
48250+
"500": {
48251+
"description": "Internal server error"
48252+
}
48253+
},
48254+
"security": [
48255+
{
48256+
"bearerAuth": []
48257+
}
48258+
],
48259+
"x-cipp-role": "Tenant.Directory.Read",
48260+
"x-cipp-any-tenant": true
48261+
}
48262+
},
4800548263
"/api/ListLicenses": {
4800648264
"get": {
4800748265
"summary": "ListLicenses",

0 commit comments

Comments
 (0)