Skip to content
This repository was archived by the owner on Feb 20, 2024. It is now read-only.

Commit 488c87c

Browse files
Merge pull request #23 from solace-iot-team/feature-apiproduct-versions
Feature apiproduct versions
2 parents 04864ea + 3032aac commit 488c87c

File tree

84 files changed

+4428
-2007
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

84 files changed

+4428
-2007
lines changed

ReleaseNotes.md

+20
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,26 @@
22

33
Solace Async API Management.
44

5+
## Version 0.1.3
6+
* [API-M Admin & Developer Portal](https://github.com/solace-iot-team/async-apim/tree/main/apim-portal): 0.1.3
7+
* [API-M Server OpenAPI](https://github.com/solace-iot-team/async-apim/blob/main/apim-server/server/common/api.yml): 0.1.0
8+
* [API-M Server](https://github.com/solace-iot-team/async-apim/tree/main/apim-server): 0.1.0
9+
* [API-M Connector OpenAPI](https://github.com/solace-iot-team/platform-api): 0.7.6
10+
11+
#### API-M Admin & Developer Portal
12+
**New Features:**
13+
* **Manage API Products**
14+
- added versions to view and update
15+
- management of owning business group
16+
- manage sharing with business group - including access type = `readonly`, `full-access`
17+
- added accessLevel attribute: `internal`, `private`, `public`
18+
- added lifecycle attribute: `draft`, `released`, `deprecated`
19+
- added access rights checks for edit, delete, and view (see documentation for details)
20+
* **API Product Catalog in Developer Portal**
21+
- renamed `Explore API Products` to `Explore APIs`
22+
- refactored grid/list view
23+
- added access right checks for list, view and creating apps from products (see documentation for details)
24+
525
## Version 0.1.2
626
* [API-M Admin & Developer Portal](https://github.com/solace-iot-team/async-apim/tree/main/apim-portal): 0.1.2
727
* [API-M Server OpenAPI](https://github.com/solace-iot-team/async-apim/blob/main/apim-server/server/common/api.yml): 0.1.0

apim-portal/package-lock.json

+30-16
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

apim-portal/package.json

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "async-apim-portal",
3-
"version": "0.1.2",
3+
"version": "0.1.3",
44
"description": "Solace Async API Management Portal",
55
"repository": {
66
"type": "git",
@@ -28,6 +28,7 @@
2828
"async-mutex": "^0.3.2",
2929
"base-64": "^1.0.0",
3030
"js-yaml": "^4.1.0",
31+
"jsonschema": "^1.4.0",
3132
"primeflex": "^2.0.0",
3233
"primeicons": "^4.1.0",
3334
"primereact": "^6.4.0",
@@ -76,7 +77,7 @@
7677
"@types/react": "^17.0.3",
7778
"@types/react-dom": "^17.0.3",
7879
"@types/react-router-dom": "^5.1.7",
79-
"@types/semver": "^7.3.8",
80+
"@types/semver": "^7.3.9",
8081
"@types/shelljs": "^0.8.9",
8182
"@types/uuid": "^8.3.4",
8283
"shelljs": "^0.8.4",

apim-portal/src/admin-portal/components/ManageApiProducts/DeleteApiProduct.tsx

+15-9
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ import { Dialog } from 'primereact/dialog';
77
import { APClientConnectorOpenApi } from "../../../utils/APClientConnectorOpenApi";
88
import { ApiCallState, TApiCallState } from "../../../utils/ApiCallState";
99
import { ApiCallStatusError } from "../../../components/ApiCallStatusError/ApiCallStatusError";
10-
11-
import '../../../components/APComponents.css';
12-
import "./ManageApiProducts.css";
1310
import { TAPEntityId } from "../../../utils/APEntityIdsService";
1411
import { E_CALL_STATE_ACTIONS } from "./ManageApiProductsCommon";
1512
import APAdminPortalApiProductsDisplayService from "../../displayServices/APAdminPortalApiProductsDisplayService";
1613

14+
import '../../../components/APComponents.css';
15+
import "./ManageApiProducts.css";
16+
1717
export interface IDeleteApiProductProps {
1818
organizationId: string;
1919
apiProductEntityId: TAPEntityId;
@@ -73,11 +73,16 @@ export const DeleteApiProduct: React.FC<IDeleteApiProductProps> = (props: IDelet
7373
props.onCancel();
7474
}
7575

76+
const renderDeleteManagedObjectConfirmDialogHeader = () => {
77+
return (<span style={{ color: 'red' }}>{DeleteManagedObjectConfirmDialogHeader}</span>);
78+
}
79+
7680
const renderDeleteManagedObjectDialogContent = (): JSX.Element => {
7781
return (
7882
<React.Fragment>
7983
<p>Deleting API Product: <b>{props.apiProductEntityId.displayName}</b>.</p>
8084
<p>Are you sure you want to delete it?</p>
85+
<p><b>This action is irreversible!</b></p>
8186
</React.Fragment>
8287
);
8388
}
@@ -86,7 +91,7 @@ export const DeleteApiProduct: React.FC<IDeleteApiProductProps> = (props: IDelet
8691
return (
8792
<React.Fragment>
8893
<Button label="Cancel" className="p-button-text p-button-plain" onClick={onDeleteManagedObjectCancel} />
89-
<Button label="Delete" icon="pi pi-trash" className="p-button-text p-button-plain p-button-outlined" onClick={onDeleteManagedObject}/>
94+
<Button label="Delete" icon="pi pi-trash" className="p-button-text p-button-plain p-button-outlined" onClick={onDeleteManagedObject} style={{ color: "red", borderColor: 'red'}} />
9095
</React.Fragment>
9196
);
9297
}
@@ -97,17 +102,18 @@ export const DeleteApiProduct: React.FC<IDeleteApiProductProps> = (props: IDelet
97102
className="p-fluid"
98103
visible={showManagedObjectDeleteDialog}
99104
style={{ width: '450px' }}
100-
header={DeleteManagedObjectConfirmDialogHeader}
105+
header={renderDeleteManagedObjectConfirmDialogHeader}
101106
modal
102107
closable={false}
103108
footer={renderDeleteManagedObjectDialogFooter()}
104109
onHide={()=> {}}
110+
contentClassName="manage-api-products-delete-confirmation-content"
105111
>
106-
<div className="confirmation-content">
107-
<p><i className="pi pi-exclamation-triangle p-mr-3" style={{ fontSize: '2rem'}} /></p>
108-
{renderDeleteManagedObjectDialogContent()}
112+
<div>
113+
<p><i className="pi pi-exclamation-triangle p-mr-3" style={{ fontSize: '2rem'}} /></p>
114+
{renderDeleteManagedObjectDialogContent()}
115+
<ApiCallStatusError apiCallStatus={apiCallStatus} />
109116
</div>
110-
<ApiCallStatusError apiCallStatus={apiCallStatus} />
111117
</Dialog>
112118
);
113119
}

0 commit comments

Comments
 (0)