You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Refactor Cosmetology License schema to remove NPI / require license number (#1291)
The Cosmetology compact does not collect npi in their license records,
and they intend to require all license records to include a license
number as they will use this to search for particular practitioners in
the system. This updates the schemas in the Cosmetology API to remove
reference to npi and enforce the inclusion of the licenseNumber field
with every license upload
The Cosmetology API will be called by the same UI as the original
compact connect app used by JCC. As such,
we needed to set the explicit ui domain in the env context so we set the
correct callback urls, CORS allowed origins, and
email template links. This adds that needed change so that CSV license
uploads through the app will work correctly.
This PR also removes API endpoints for features that will not be
applicable to the Cosmetology compact. This includes endpoints for
programmatically reading privileges from the system, as well as the
search endpoint for exporting privilege CSV reports.
### Requirements List
- The CDK environment contexts in SSM parameter store need to be updated
to include the new optional 'ui_domain_name_override' field (Complete)
### Description List
- Remove NPI from Cosmetology license schema
- Enforce 'licenseNumber' field
- Remove unneeded State API endpoints for programmatically reading data
from the system
- Remove irrelevant endpoint for exporting privilege records through
search API
- Add 'ui_domain_name_override' field to SSM environment contexts
### Testing List
- For API configuration changes: CDK tests added/updated in
`backend/compact-connect/tests/unit/test_api.py`
- For API endpoint changes: OpenAPI spec updated to show latest endpoint
configuration `run compact-connect/bin/download_oas30.py`
- Tests updated to remove reference to NPI and expect licenseNumber
- Code review
Closes#1290#1283
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Per-environment UI domain override; custom UI domains now require TLS
1.2. Pipeline stages disable the public execute-api endpoint.
* **Breaking Changes**
* Privilege export/history/deactivation features removed across APIs,
handlers, tests, and docs.
* National Provider Identifier (NPI) removed from
inputs/responses/tests.
* licenseNumber is now required for license submissions;
privilegeJurisdictions and related fields removed.
* **Documentation**
* Added UI domain override guidance; removed signature-auth and
privilege-export documentation and examples.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Copy file name to clipboardExpand all lines: backend/cosmetology-app/app_clients/README.md
+1-140Lines changed: 1 addition & 140 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -56,9 +56,7 @@ The following scopes are available at the jurisdiction level:
56
56
```
57
57
58
58
Currently, the most common scope needed by app clients is `{jurisdiction}/{compact}.write`, which allows uploading
59
-
license data for a jurisdiction/compact combination. Scopes that expose PII (e.g., `.readSSN`, `.readPrivate`) should
60
-
be granted sparingly and will require valid request signatures once a signing public key is configured for the
61
-
jurisdiction.
59
+
license data for a jurisdiction/compact combination.
62
60
63
61
### 3. Create App Client Using Interactive Python Script
64
62
@@ -108,143 +106,6 @@ link that you'll generate separately.
108
106
As part of the email message sent to the consuming team, be sure to include the onboarding instructions document from
109
107
the `it_staff_onboarding_instructions/` directory.
110
108
111
-
## Managing API Signing Public Keys
112
-
113
-
### Overview
114
-
115
-
Signature-based authentication provides an additional layer of security for API access to sensitive licensure data. Each
116
-
compact/state combination can have multiple SIGNATURE public keys configured to support key rotation and zero-downtime
117
-
deployments.
118
-
119
-
### Authorization Requirements
120
-
121
-
**⚠️ CRITICAL SECURITY NOTICE:** Due to the sensitivity of the data protected by SIGNATURE authentication (including
122
-
partial Social Security Numbers, personal addresses, and professional license details), configuration of new SIGNATURE
123
-
public keys in production environments **MUST** include explicit authorization from the state board executive director.
124
-
125
-
126
-
### Creating SIGNATURE Public Keys
127
-
128
-
Once a state configures a public key, they will be able to access the SIGNATURE-required API endpoints. API endpoints with
129
-
_optional_ SIGNATURE support will also begin to enforce SIGNATURE signatures for that combination of compact and state. **This
130
-
means that, once a compact/state has a public key configured, they will be denied access to SIGNATURE-Optional endpoints,
131
-
such as the `POST license` endpoint, unless they have also implemented SIGNATURE signatures there as well.** Be sure that
132
-
the representative is advised that they should begin signing those requests _before_ CompactConnect has a configured
133
-
public key.
134
-
135
-
#### 1. Prerequisites
136
-
137
-
Before creating a new SIGNATURE public key, ensure you have:
138
-
-**Production Authorization**: Explicit approval from the state board executive director for production environments
139
-
- Validated the identity of the individual providing the public key to you
140
-
- Jurisdiction and compact information confirmed
141
-
- Contact information for the state IT representative
142
-
- The public key file (`.pub` format) from the state IT representative (copy it to the same directory you are running the script from). The name of the file must match the key id.
143
-
- AWS credentials configured with permissions to write to the compact configuration table
144
-
- Python 3.10+ installed with boto3 dependency (`pip install boto3`)
145
-
146
-
#### 2. Key ID Naming Convention
147
-
148
-
The state IT department should provide an identifier; however, you can recommend a descriptive key ID that includes:
149
-
- Environment indicator (if applicable)
150
-
- Version or date suffix
151
-
152
-
Examples:
153
-
-`prod-key-001`
154
-
-`beta-key-2024-01`
155
-
156
-
#### 3. Create SIGNATURE Public Key Using Interactive Python Script
157
-
158
-
**Use the provided Python script in the bin directory for streamlined SIGNATURE key management:**
0 commit comments