Feat/928 state onboarding docs#1003
Conversation
WalkthroughRelocated IT staff onboarding content from an app_client README into a centralized docs file and updated API docs to clarify required headers, NULL handling, and async vs sync upload behavior. No functional code or public API changes. Changes
Sequence Diagram(s)sequenceDiagram
participant StateIT as State IT System
participant Auth as Auth Server
participant API as CompactConnect API
StateIT->>Auth: POST /oauth2/token (client_credentials)
Auth-->>StateIT: 200 { access_token, expires_in }
StateIT->>API: POST /licenses (Authorization: Bearer, Content-Type: application/json, User-Agent)
API-->>StateIT: 200 Accepted (ingestion queued) or 4xx (validation/auth errors)
Note over API: Bulk-upload alternative returns upload URL and is processed asynchronously
Estimated code review effort🎯 2 (Simple) | ⏱️ ~8 minutes Assessment against linked issues
Assessment against linked issues: Out-of-scope changes(No out-of-scope functional code changes detected; documentation-only edits and file relocation are within scope.) Possibly related PRs
Suggested reviewers
Poem
Tip 🔌 Remote MCP (Model Context Protocol) integration is now available!Pro plan users can now connect to remote MCP servers from the Integrations page. Connect with popular remote MCPs such as Notion and Linear to add more context to your reviews and chats. ✨ Finishing Touches🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Actionable comments posted: 4
🔭 Outside diff range comments (1)
backend/compact-connect/docs/README.md (1)
111-113: Spell out header-related failures (403 and 415).Make the operational impact explicit per the PR objective.
-Note that HTTP request headers such as `Content-Type` and `User-Agent` are important to the API and should be -transmitted with HTTP requests. Most of the API only accepts a `Content-Type` of `application/json`. +Note that HTTP request headers such as `Content-Type` and `User-Agent` are required: +- Most endpoints only accept `Content-Type: application/json`; missing/incorrect values may result in `415 Unsupported Media Type`. +- Some upstream firewall rules require a valid `User-Agent`; omitting it can result in `403 Forbidden`.
🧹 Nitpick comments (4)
backend/compact-connect/docs/it_staff_onboarding_instructions.md (3)
90-96: Avoid secret scanners false positives in token example.Gitleaks flagged the sample token as a generic API key. Use a neutral placeholder to prevent noise.
-{ - "access_token": "eyJraWQiOiJleGFtcGxlS2V5SWQiLCJhbGciOiJSUzI1NiJ9...", - "expires_in": 900, - "token_type": "Bearer" -} +{ + "access_token": "<access_token>", + "expires_in": 900, + "token_type": "Bearer" +}
225-227: Grammar: “who” instead of “which.”Use “who sent you the credentials.”
-please contact the individual which sent you the credentials. +please contact the individual who sent you the credentials.
119-144: PII hygiene note for examples.The JSON example includes SSN, NPI, name, address. Add a one-line reminder to only use fictitious/test data in examples.
```bash curl --location --request POST '<licenseUploadUrl>' \ @@ ]'
+Note: The example data above is fictitious. Do not upload real PII in tests. Use test data in non-production environments.
</blockquote></details> <details> <summary>backend/compact-connect/docs/README.md (1)</summary><blockquote> `96-101`: **Link directly to the synchronous POST licenses endpoint in the spec.** Provide the exact path so readers can find it quickly. ```diff -For faster feedback, there is also a POST licenses endpoint, +For faster feedback, there is also a `POST /v1/compacts/{compact}/jurisdictions/{jurisdiction}/licenses` endpoint, where up to 100 json-formatted licenses can be uploaded in a single request, with synchronous validation results. We highly recommend that states with the capability integrate with this JSON endpoint instead, for more efficient -communication and feedback. See the API specification for more details. +communication and feedback. See the API specification for more details.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (3)
backend/compact-connect/app_clients/it_staff_onboarding_instructions/README.md(1 hunks)backend/compact-connect/docs/README.md(3 hunks)backend/compact-connect/docs/it_staff_onboarding_instructions.md(1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-05-13T22:33:53.986Z
Learnt from: landonshumway-ia
PR: csg-org/CompactConnect#798
File: backend/compact-connect/docs/onboarding/JURISDICTION_COMPACT_ONBOARDING.md:117-117
Timestamp: 2025-05-13T22:33:53.986Z
Learning: The app_clients directory is located at the root of the compact-connect directory, so the correct relative path from docs/onboarding is ../../app_clients/README.md
Applied to files:
backend/compact-connect/app_clients/it_staff_onboarding_instructions/README.md
🪛 LanguageTool
backend/compact-connect/docs/it_staff_onboarding_instructions.md
[grammar] ~16-~16: Ensure spelling is correct
Context: ...e need for manual license data entry by staff - Improve Accuracy: Minimize human erro...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~17-~17: Ensure spelling is correct
Context: ...*: Minimize human error in license data transmission - Support Interstate Mobility: Enable q...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~19-~19: Ensure spelling is correct
Context: ... your state's requirements as a compact member This document outlines the technical pro...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~30-~30: Ensure spelling is correct
Context: ... password manager or secrets management system 2. Do not share these credentials with unau...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~31-~31: Ensure spelling is correct
Context: ...are these credentials with unauthorized personnel 3. Do not hardcode these credentials in sou...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~33-~33: Ensure spelling is correct
Context: ...pact, state, URLs) for reference during integration > Important: If the link provided has a...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[style] ~54-~54: Did you mean “that” or “date”?
Context: ... The API endpoint for uploading license data ## Authentication Process for Uploadi...
(DAT)
[style] ~56-~56: Did you mean “that” or “date”?
Context: ...ntication Process for Uploading License Data Follow these steps to obtain an acces...
(DAT)
[grammar] ~84-~84: Ensure spelling is correct
Context: ... this information was provided in the email - <compact> with the lower-cased compact abbreviat...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~87-~87: Ensure spelling is correct
Context: ... this information was provided in the email Example response: ```json { "access_to...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~150-~150: Ensure spelling is correct
Context: ... - this information was provided in the email - The example payload shown here with your...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~168-~168: Ensure spelling is correct
Context: ...ne of the valid types for the specified compact - All date fields must use the `YYYY-MM-DD...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~189-~189: Ensure spelling is correct
Context: ...to upload to the specified jurisdiction/compact - 502: Internal Server Error - There wa...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~213-~213: Ensure spelling is correct
Context: ...quired fields are present and formatted correctly - Verify that licenseType matches exactl...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~226-~226: Ensure spelling is correct
Context: ...nect API, please contact the individual which sent you the credentials.
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
backend/compact-connect/docs/README.md
[style] ~29-~29: To elevate your writing, try using an alternative expression here.
Context: ...pty in some rows. - Order of columns does not matter. - String lengths are enforced - exc...
(MATTERS_RELEVANT)
🪛 Gitleaks (8.27.2)
backend/compact-connect/docs/it_staff_onboarding_instructions.md
92-92: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.
(generic-api-key)
🪛 markdownlint-cli2 (0.17.2)
backend/compact-connect/docs/README.md
99-99: Bare URL used
(MD034, no-bare-urls)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: TestPython
🔇 Additional comments (2)
backend/compact-connect/app_clients/it_staff_onboarding_instructions/README.md (1)
1-1: Approve link relocation; target confirmed
The relative link inapp_clients/it_staff_onboarding_instructions/README.mdcorrectly points todocs/it_staff_onboarding_instructions.md, and the target file exists atbackend/compact-connect/docs/it_staff_onboarding_instructions.md. LGTM.backend/compact-connect/docs/README.md (1)
36-39: Good addition: explicit non-NULL policy.This aligns with MN feedback and prevents common 400s.
There was a problem hiding this comment.
Actionable comments posted: 2
♻️ Duplicate comments (4)
backend/compact-connect/docs/it_staff_onboarding_instructions.md (4)
116-121: Good: User-Agent header added to the upload example (MN firewall requirement).This directly addresses the 403s caused by missing User-Agent.
167-172: Good: Explicitly document that null values are not accepted.This aligns with CompactConnect schemas (optional fields must be omitted, not null).
178-181: Clarification on 200 = accepted after synchronous validation looks good.Clear separation between sync validation and async ingest reduces ambiguity.
191-194: Good: Call out 403 due to missing User-Agent and 415 for wrong Content-Type.This directly maps common misconfigurations to status codes and addresses MN feedback.
🧹 Nitpick comments (6)
backend/compact-connect/docs/it_staff_onboarding_instructions.md (6)
70-78: Add User-Agent header to the token request for consistency with firewall expectations.Some environments enforce User-Agent checks consistently. Including it in auth improves parity with later examples.
curl --location --request POST '<authUrl>' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --header 'Accept: application/json' \ +--header 'User-Agent: <your-app-name>/<version> (<contact-email-or-url>)' \ --data-urlencode 'grant_type=client_credentials' \ --data-urlencode 'client_id=<clientId>' \ --data-urlencode 'client_secret=<clientSecret>' \ --data-urlencode 'scope=<jurisdiction>/<compact>.write'
98-100: Fix markdownlint MD034: convert bare URL to a markdown link.This avoids linter noise and improves readability.
-For more information about this authentication process, please see the following -AWS documentation: https://docs.aws.amazon.com/cognito/latest/developerguide/token-endpoint.html +For more information about this authentication process, see the +[AWS Cognito token endpoint documentation](https://docs.aws.amazon.com/cognito/latest/developerguide/token-endpoint.html).
116-121: Optionally add Accept: application/json to the upload example.Small consistency tweak that mirrors Step 1 and clarifies expected response media type.
curl --location --request POST '<licenseUploadUrl>' \ --header 'Authorization: Bearer <access_token>' \ --header 'Content-Type: application/json' \ +--header 'Accept: application/json' \ --header 'User-Agent: <your-app-name>/<version> (<contact-email-or-url>)' \ --data '[
121-145: Use a clearly non-real SSN in examples to avoid PII-like patterns.Replace the SSN with a canonical dummy SSN to reduce scanner noise and avoid confusion.
{ - "ssn":"123-45-6789", + "ssn":"000-00-0000", "licenseNumber":"LIC123456",
200-201: Add where async processing errors will surface.Readers will benefit from knowing how async failures are reported (they won’t change the initial 200).
-> **Note**: 200 status code means your request passed synchronous validation and was accepted for processing. Ingest and -> downstream processing are asynchronous and may take several minutes. +> Note: A 200 status code means your request passed synchronous validation and was accepted for processing. Ingest and +> downstream processing are asynchronous and may take several minutes. Any errors during later asynchronous processing +> will not change the 200 response and are surfaced via CompactConnect’s monitoring/notification channels (e.g., dashboard or logs).
229-230: Grammar: “who sent you” instead of “which sent you”.Minor polish.
-please contact the individual which sent you the credentials. +please contact the individual who sent you the credentials.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
backend/compact-connect/docs/it_staff_onboarding_instructions.md(1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-04-29T02:18:11.099Z
Learnt from: landonshumway-ia
PR: csg-org/CompactConnect#769
File: backend/compact-connect/lambdas/python/common/cc_common/data_model/schema/adverse_action/record.py:40-43
Timestamp: 2025-04-29T02:18:11.099Z
Learning: In the CompactConnect codebase, API design follows a pattern where fields are either provided with valid values or omitted entirely. Null values are not allowed, even for optional fields. This applies to Marshmallow schemas where fields are configured with `required=False, allow_none=False`.
Applied to files:
backend/compact-connect/docs/it_staff_onboarding_instructions.md
🪛 LanguageTool
backend/compact-connect/docs/it_staff_onboarding_instructions.md
[grammar] ~16-~16: Ensure spelling is correct
Context: ...e need for manual license data entry by staff - Improve Accuracy: Minimize human erro...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~17-~17: Ensure spelling is correct
Context: ...*: Minimize human error in license data transmission - Support Interstate Mobility: Enable q...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~19-~19: Ensure spelling is correct
Context: ... your state's requirements as a compact member This document outlines the technical pro...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~30-~30: Ensure spelling is correct
Context: ... password manager or secrets management system 2. Do not share these credentials with unau...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~31-~31: Ensure spelling is correct
Context: ...are these credentials with unauthorized personnel 3. Do not hardcode these credentials in sou...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~33-~33: Ensure spelling is correct
Context: ...pact, state, URLs) for reference during integration > Important: If the link provided has a...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[style] ~54-~54: Did you mean “that” or “date”?
Context: ... The API endpoint for uploading license data ## Authentication Process for Uploadi...
(DAT)
[style] ~56-~56: Did you mean “that” or “date”?
Context: ...ntication Process for Uploading License Data Follow these steps to obtain an acces...
(DAT)
[grammar] ~84-~84: Ensure spelling is correct
Context: ... this information was provided in the email - <compact> with the lower-cased compact abbreviat...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~87-~87: Ensure spelling is correct
Context: ... this information was provided in the email Example response: ```json { "access_to...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~151-~151: Ensure spelling is correct
Context: ... - this information was provided in the email - The example payload shown here with your...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~169-~169: Ensure spelling is correct
Context: ...ne of the valid types for the specified compact - All date fields must use the `YYYY-MM-DD...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~170-~170: Ensure spelling is correct
Context: ...l date fields must use the YYYY-MM-DD format - The API does not accept null values. F...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~216-~216: Ensure spelling is correct
Context: ...quired fields are present and formatted correctly - Verify that licenseType matches exactl...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~229-~229: Ensure spelling is correct
Context: ...nect API, please contact the individual which sent you the credentials.
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
🪛 Gitleaks (8.27.2)
backend/compact-connect/docs/it_staff_onboarding_instructions.md
92-92: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.
(generic-api-key)
🪛 markdownlint-cli2 (0.17.2)
backend/compact-connect/docs/it_staff_onboarding_instructions.md
99-99: Bare URL used
(MD034, no-bare-urls)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: TestPython
landonshumway-ia
left a comment
There was a problem hiding this comment.
Looks good, a couple of comments that are non-blocking
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (2)
backend/compact-connect/docs/it_staff_onboarding_instructions.md (2)
1-1: Remove the UTF-8 BOM character at the start of the file.There’s a leading BOM before the first “#”. This can break linters/tooling.
Apply:
-# CompactConnect Automated License Data Upload Instructions (Beta Release) +# CompactConnect Automated License Data Upload Instructions (Beta Release)
205-209: Add Content-Type tip to “Unknown error parsing request body.”This is a top root cause and belongs in troubleshooting for quick wins.
### 1. "Unknown error parsing request body" - Ensure your JSON data is properly formatted with no trailing commas - Check that all quoted strings use double quotes, not single quotes - Verify that your payload is a valid JSON array, even for a single license record + - Ensure the `Content-Type: application/json` header is set on the request
🧹 Nitpick comments (3)
backend/compact-connect/docs/it_staff_onboarding_instructions.md (3)
98-100: Avoid bare URL (markdownlint MD034) and improve readability by using a Markdown link.-For more information about this authentication process, please see the following -AWS documentation: https://docs.aws.amazon.com/cognito/latest/developerguide/token-endpoint.html +For more information about this authentication process, please see the following +[AWS documentation on the token endpoint](https://docs.aws.amazon.com/cognito/latest/developerguide/token-endpoint.html).
80-88: Provide a concrete example for the OAuth scope to reduce ambiguity.- `<compact>` with the lower-cased compact abbreviation (`octp` for the 'Occupational Therapy' Compact, `aslp` for 'Audiology and Speech Language Pathology' Compact, or `coun` for the 'Counseling' Compact) - this information was provided in the email + +Example scope: + +``` +ky/aslp.write +```
228-230: Grammar: “which” → “who”.-please contact the individual which sent you the credentials. +please contact the individual who sent you the credentials.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
backend/compact-connect/docs/it_staff_onboarding_instructions.md(1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-04-29T02:18:11.099Z
Learnt from: landonshumway-ia
PR: csg-org/CompactConnect#769
File: backend/compact-connect/lambdas/python/common/cc_common/data_model/schema/adverse_action/record.py:40-43
Timestamp: 2025-04-29T02:18:11.099Z
Learning: In the CompactConnect codebase, API design follows a pattern where fields are either provided with valid values or omitted entirely. Null values are not allowed, even for optional fields. This applies to Marshmallow schemas where fields are configured with `required=False, allow_none=False`.
Applied to files:
backend/compact-connect/docs/it_staff_onboarding_instructions.md
🪛 LanguageTool
backend/compact-connect/docs/it_staff_onboarding_instructions.md
[grammar] ~6-~6: There might be a mistake here.
Context: ...s with licenses in good standing to work across state lines without obtaining add...
(QB_NEW_EN)
[grammar] ~14-~14: Ensure spelling is correct
Context: ...to-date with your state's latest license information - Reduce Manual Work: Eliminate the nee...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~16-~16: Ensure spelling is correct
Context: ...e need for manual license data entry by staff - Improve Accuracy: Minimize human erro...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~17-~17: Ensure spelling is correct
Context: ...*: Minimize human error in license data transmission - Support Interstate Mobility: Enable q...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~19-~19: Ensure spelling is correct
Context: ... your state's requirements as a compact member This document outlines the technical pro...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~22-~22: There might be a mistake here.
Context: ... establish a secure, reliable connection between your licensing systems and the C...
(QB_NEW_EN)
[grammar] ~25-~25: Ensure spelling is correct
Context: ...CompactConnect platform. ## Credential Security You have received a one-time use link to...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~27-~27: There might be a mistake here.
Context: ...long with an email containing contextual information about your integration. Afte...
(QB_NEW_EN)
[grammar] ~30-~30: Ensure spelling is correct
Context: ... password manager or secrets management system 2. Do not share these credentials with unau...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~31-~31: Ensure spelling is correct
Context: ...are these credentials with unauthorized personnel 3. Do not hardcode these credentials in sou...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~33-~33: Ensure spelling is correct
Context: ...pact, state, URLs) for reference during integration > Important: If the link provided has a...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~56-~56: Ensure spelling is correct
Context: ...ntication Process for Uploading License Data Follow these steps to obtain an access t...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~60-~60: Ensure spelling is correct
Context: ...se API: ### Step 1: Generate an Access Token You must first obtain an access token to...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~63-~63: There might be a mistake here.
Context: ...demonstrates how to generate a token for the beta environment, you should imp...
(QB_NEW_EN)
[grammar] ~64-~64: There might be a mistake here.
Context: ...application's programming language using appropriate HTTPS request libraries: > ...
(QB_NEW_EN)
[grammar] ~80-~80: There might be a mistake here.
Context: ...isdiction>/.write' ``` Replace: - <clientId> with your client ID - ``...
(QB_NEW_EN)
[grammar] ~81-~81: There might be a mistake here.
Context: ...place: - <clientId> with your client ID - <clientSecret> with your client secret - `<jurisdicti...
(QB_NEW_EN)
[grammar] ~82-~82: There might be a mistake here.
Context: ... <clientSecret> with your client secret - <jurisdiction> with your lower-cased two-letter state...
(QB_NEW_EN)
[grammar] ~84-~84: Ensure spelling is correct
Context: ... this information was provided in the email - <compact> with the lower-cased compact abbreviat...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~85-~85: There might be a mistake here.
Context: ... for the 'Occupational Therapy' Compact, aslp for 'Audiology and Speech Language Pat...
(QB_NEW_EN)
[grammar] ~87-~87: Ensure spelling is correct
Context: ... this information was provided in the email Example response: ```json { "access_to...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~98-~98: There might be a mistake here.
Context: ...cation process, please see the following AWS documentation: https://docs.aws.amaz...
(QB_NEW_EN)
[grammar] ~106-~106: Ensure spelling is correct
Context: ...Step 2: Upload License Data to the Beta Environment The CompactConnect License API can be ca...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~108-~108: There might be a mistake here.
Context: ... which takes in a list of license record objects. The following curl command exam...
(QB_NEW_EN)
[grammar] ~112-~112: There might be a mistake here.
Context: ...00 license records per request). See the Technical User Guide for ...
(QB_NEW_EN)
[grammar] ~147-~147: There might be a mistake here.
Context: ... "npi":"1234567890" } ]' ``` Replace: - <access_token> with the access token from Step 1 - `<...
(QB_NEW_EN)
[grammar] ~148-~148: There might be a mistake here.
Context: ...token>with the access token from Step 1 -` with the lower-cased compact abbreviat...
(QB_NEW_EN)
[grammar] ~151-~151: Ensure spelling is correct
Context: ... - this information was provided in the email - The example payload shown here with your...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~154-~154: Ensure spelling is correct
Context: ...lternative: Upload License Data via CSV File In addition to calling the POST endpoint...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~159-~159: There might be a mistake here.
Context: ... formatting requirements, and the upload process, please refer to [the technical ...
(QB_NEW_EN)
[grammar] ~164-~164: There might be a mistake here.
Context: ...h descriptions of each field, please see [the technical user guide](./README.md#f...
(QB_NEW_EN)
[grammar] ~168-~168: There might be a mistake here.
Context: ...compactEligibility cannot be "eligible" - licenseType must match exactly with one of the vali...
(QB_NEW_EN)
[grammar] ~169-~169: Ensure spelling is correct
Context: ...ne of the valid types for the specified compact - All date fields must use the `YYYY-MM-DD...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~170-~170: Ensure spelling is correct
Context: ...l date fields must use the YYYY-MM-DD format - The API does not accept null values. F...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~187-~187: There might be a mistake here.
Context: ...age": "OK" } ``` ### 2. Error Responses If you receive an error response, check ...
(QB_NEW_EN)
[grammar] ~196-~196: There might be a mistake here.
Context: ...g your request ### 3. Validation Errors If your license data fails validation, t...
(QB_NEW_EN)
[grammar] ~197-~197: There might be a mistake here.
Context: ...a 400 status code with details about the validation errors in the response body. ...
(QB_NEW_EN)
[grammar] ~216-~216: Ensure spelling is correct
Context: ...quired fields are present and formatted correctly - Verify that licenseType matches exactl...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~226-~226: Ensure spelling is correct
Context: ...our application code.** ## Support and Feedback If you encounter any issues, have questi...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~228-~228: There might be a mistake here.
Context: ...ck based on your experience working with the CompactConnect API, please contact t...
(QB_NEW_EN)
[grammar] ~229-~229: Ensure spelling is correct
Context: ...nect API, please contact the individual which sent you the credentials.
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
🪛 markdownlint-cli2 (0.17.2)
backend/compact-connect/docs/it_staff_onboarding_instructions.md
99-99: Bare URL used
(MD034, no-bare-urls)
🔇 Additional comments (4)
backend/compact-connect/docs/it_staff_onboarding_instructions.md (4)
116-121: Good: Required headers are explicitly called out (Authorization, Content-Type, User-Agent).This directly addresses MN’s 403 (WAF) and 415 (media type) feedback and reduces common integration failures.
167-172: Explicit “no nulls” guidance is correct and aligned with our API design.This matches our schema policy (optional fields omitted vs. null) and prevents avoidable 400s. Thanks for making this clear.
200-201: Clarify how asynchronous processing errors are surfaced.“200 means accepted and queued” is clear. Add one sentence about where teams should look for async ingest failures (e.g., a dashboard, logs, notification channel) so expectations are set.
Proposed addition:
> **Note**: 200 status code means your request passed synchronous validation and was accepted for processing. Ingest and -> downstream processing are asynchronous and may take several minutes. +> downstream processing are asynchronous and may take several minutes. Any errors during asynchronous ingest will not +> change the 200 response and will be surfaced via <link to the appropriate monitoring/logs/notification mechanism>.If you can point me to the correct target (dashboard, logs, or doc section), I can wire in the exact link.
159-166: Anchors verified — links are validBoth referenced headings exist in backend/compact-connect/docs/README.md, so the anchors used in the onboarding doc resolve correctly.
- backend/compact-connect/docs/README.md — line 82: "### Machine-to-machine automated uploads" (matches ./README.md#machine-to-machine-automated-uploads)
- backend/compact-connect/docs/README.md — line 34: "#### Field Descriptions" (matches ./README.md#field-descriptions)
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (1)
backend/compact-connect/docs/it_staff_onboarding_instructions.md (1)
1-1: Remove the UTF‑8 BOM at file start.There’s a BOM character before the first “#” which can break linters/tooling.
Apply:
-# CompactConnect Automated License Data Upload Instructions (Beta Release) +# CompactConnect Automated License Data Upload Instructions (Beta Release)
🧹 Nitpick comments (4)
backend/compact-connect/docs/it_staff_onboarding_instructions.md (4)
98-100: Fix markdownlint MD034 (bare URL) by using a Markdown link.-For more information about this authentication process, please see the following -AWS documentation: https://docs.aws.amazon.com/cognito/latest/developerguide/token-endpoint.html +For more information about this authentication process, please see the following +[AWS Cognito token endpoint documentation](https://docs.aws.amazon.com/cognito/latest/developerguide/token-endpoint.html).
229-231: Grammar: “which sent you” → “who sent you”.-please contact the individual which sent you the credentials. +please contact the individual who sent you the credentials.
115-116: Add a brief PII caution around the example payload.Helps prevent accidental use of real SSNs/PII in testing.
```bash +> Important: Use only synthetic/test data in examples and test uploads. Do not include real SSNs or other PII. curl --location --request POST '<licenseUploadUrl>' \
70-78: Optional: Include a User-Agent header in the token request for consistency.Some environments enforce UA at the edge. Adding a UA to Step 1 reduces confusion even if Cognito doesn’t require it.
curl --location --request POST '<authUrl>' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --header 'Accept: application/json' \ +--header 'User-Agent: <your-app-name>/<version> (<contact-email-or-url>)' \ --data-urlencode 'grant_type=client_credentials' \ --data-urlencode 'client_id=<clientId>' \ --data-urlencode 'client_secret=<clientSecret>' \ --data-urlencode 'scope=<jurisdiction>/<compact>.write'Please confirm whether your auth URL is behind any WAF/proxy that enforces User-Agent; if not, feel free to skip this.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these settings in your CodeRabbit configuration.
📒 Files selected for processing (1)
backend/compact-connect/docs/it_staff_onboarding_instructions.md(1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-04-29T02:18:11.099Z
Learnt from: landonshumway-ia
PR: csg-org/CompactConnect#769
File: backend/compact-connect/lambdas/python/common/cc_common/data_model/schema/adverse_action/record.py:40-43
Timestamp: 2025-04-29T02:18:11.099Z
Learning: In the CompactConnect codebase, API design follows a pattern where fields are either provided with valid values or omitted entirely. Null values are not allowed, even for optional fields. This applies to Marshmallow schemas where fields are configured with `required=False, allow_none=False`.
Applied to files:
backend/compact-connect/docs/it_staff_onboarding_instructions.md
🪛 LanguageTool
backend/compact-connect/docs/it_staff_onboarding_instructions.md
[grammar] ~6-~6: There might be a mistake here.
Context: ...s with licenses in good standing to work across state lines without obtaining add...
(QB_NEW_EN)
[grammar] ~14-~14: Ensure spelling is correct
Context: ...to-date with your state's latest license information - Reduce Manual Work: Eliminate the nee...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~16-~16: Ensure spelling is correct
Context: ...e need for manual license data entry by staff - Improve Accuracy: Minimize human erro...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~17-~17: Ensure spelling is correct
Context: ...*: Minimize human error in license data transmission - Support Interstate Mobility: Enable q...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~19-~19: Ensure spelling is correct
Context: ... your state's requirements as a compact member This document outlines the technical pro...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~22-~22: There might be a mistake here.
Context: ... establish a secure, reliable connection between your licensing systems and the C...
(QB_NEW_EN)
[grammar] ~25-~25: Ensure spelling is correct
Context: ...CompactConnect platform. ## Credential Security You have received a one-time use link to...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~27-~27: There might be a mistake here.
Context: ...long with an email containing contextual information about your integration. Afte...
(QB_NEW_EN)
[grammar] ~30-~30: Ensure spelling is correct
Context: ... password manager or secrets management system 2. Do not share these credentials with unau...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~31-~31: Ensure spelling is correct
Context: ...are these credentials with unauthorized personnel 3. Do not hardcode these credentials in sou...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~33-~33: Ensure spelling is correct
Context: ...pact, state, URLs) for reference during integration > Important: If the link provided has a...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~56-~56: Ensure spelling is correct
Context: ...ntication Process for Uploading License Data Follow these steps to obtain an access t...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~60-~60: Ensure spelling is correct
Context: ...se API: ### Step 1: Generate an Access Token You must first obtain an access token to...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~63-~63: There might be a mistake here.
Context: ...demonstrates how to generate a token for the beta environment, you should imp...
(QB_NEW_EN)
[grammar] ~64-~64: There might be a mistake here.
Context: ...application's programming language using appropriate HTTPS request libraries: > ...
(QB_NEW_EN)
[grammar] ~80-~80: There might be a mistake here.
Context: ...isdiction>/.write' ``` Replace: - <clientId> with your client ID - ``...
(QB_NEW_EN)
[grammar] ~81-~81: There might be a mistake here.
Context: ...place: - <clientId> with your client ID - <clientSecret> with your client secret - `<jurisdicti...
(QB_NEW_EN)
[grammar] ~82-~82: There might be a mistake here.
Context: ... <clientSecret> with your client secret - <jurisdiction> with your lower-cased two-letter state...
(QB_NEW_EN)
[grammar] ~84-~84: Ensure spelling is correct
Context: ... this information was provided in the email - <compact> with the lower-cased compact abbreviat...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~85-~85: There might be a mistake here.
Context: ... for the 'Occupational Therapy' Compact, aslp for 'Audiology and Speech Language Pat...
(QB_NEW_EN)
[grammar] ~87-~87: Ensure spelling is correct
Context: ... this information was provided in the email Example response: ```json { "access_to...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~98-~98: There might be a mistake here.
Context: ...cation process, please see the following AWS documentation: https://docs.aws.amaz...
(QB_NEW_EN)
[grammar] ~106-~106: Ensure spelling is correct
Context: ...Step 2: Upload License Data to the Beta Environment The CompactConnect License API can be ca...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~108-~108: There might be a mistake here.
Context: ... which takes in a list of license record objects. The following curl command exam...
(QB_NEW_EN)
[grammar] ~112-~112: There might be a mistake here.
Context: ...00 license records per request). See the Technical User Guide for ...
(QB_NEW_EN)
[grammar] ~147-~147: There might be a mistake here.
Context: ... "npi":"1234567890" } ]' ``` Replace: - <access_token> with the access token from Step 1 - `<...
(QB_NEW_EN)
[grammar] ~148-~148: There might be a mistake here.
Context: ...token>with the access token from Step 1 -` with the lower-cased compact abbreviat...
(QB_NEW_EN)
[grammar] ~151-~151: Ensure spelling is correct
Context: ... - this information was provided in the email - The example payload shown here with your...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~155-~155: Ensure spelling is correct
Context: ...lternative: Upload License Data via CSV File In addition to calling the POST endpoint...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~160-~160: There might be a mistake here.
Context: ... formatting requirements, and the upload process, please refer to [the technical ...
(QB_NEW_EN)
[grammar] ~165-~165: There might be a mistake here.
Context: ...h descriptions of each field, please see [the technical user guide](./README.md#f...
(QB_NEW_EN)
[grammar] ~169-~169: There might be a mistake here.
Context: ...compactEligibility cannot be "eligible" - licenseType must match exactly with one of the vali...
(QB_NEW_EN)
[grammar] ~170-~170: Ensure spelling is correct
Context: ...ne of the valid types for the specified compact - All date fields must use the `YYYY-MM-DD...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~171-~171: Ensure spelling is correct
Context: ...l date fields must use the YYYY-MM-DD format - The API does not accept null values. F...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~188-~188: There might be a mistake here.
Context: ...age": "OK" } ``` ### 2. Error Responses If you receive an error response, check ...
(QB_NEW_EN)
[grammar] ~197-~197: There might be a mistake here.
Context: ...g your request ### 3. Validation Errors If your license data fails validation, t...
(QB_NEW_EN)
[grammar] ~198-~198: There might be a mistake here.
Context: ...a 400 status code with details about the validation errors in the response body. ...
(QB_NEW_EN)
[grammar] ~217-~217: Ensure spelling is correct
Context: ...quired fields are present and formatted correctly - Verify that licenseType matches exactl...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~227-~227: Ensure spelling is correct
Context: ...our application code.** ## Support and Feedback If you encounter any issues, have questi...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~229-~229: There might be a mistake here.
Context: ...ck based on your experience working with the CompactConnect API, please contact t...
(QB_NEW_EN)
[grammar] ~230-~230: Ensure spelling is correct
Context: ...nect API, please contact the individual which sent you the credentials.
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
🪛 markdownlint-cli2 (0.17.2)
backend/compact-connect/docs/it_staff_onboarding_instructions.md
99-99: Bare URL used
(MD034, no-bare-urls)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: TestPython
🔇 Additional comments (2)
backend/compact-connect/docs/it_staff_onboarding_instructions.md (2)
119-119: LGTM: Explicit User-Agent requirement and 415 guidance are clearly documented.This aligns with MN/WAF feedback and will reduce 403/415 support churn.
Also applies to: 193-195
172-173: LGTM: Clear, explicit “no nulls” requirement (matches schema policy).This matches our schemas (required=False, allow_none=False) and prevents 400s.
6c6f62e to
cf291c0
Compare
There was a problem hiding this comment.
Actionable comments posted: 0
♻️ Duplicate comments (2)
backend/compact-connect/docs/it_staff_onboarding_instructions.md (2)
1-1: Remove leading UTF‑8 BOM character.The invisible BOM before the first “#” can break tooling and linters. Remove it.
-# CompactConnect Automated License Data Upload Instructions (Beta Release) +# CompactConnect Automated License Data Upload Instructions (Beta Release)
115-121: Unify Step 2 URL usage: use the issued and remove conflicting placeholders.The curl uses / while the note claims you provide a fully scoped URL. Use the provided and drop the extra bullets to avoid setup errors.
```bash -curl --location --request POST 'https://api.beta.compactconnect.org/v1/compacts/<compact>/jurisdictions/<jurisdiction>/licenses' \ +curl --location --request POST '<licenseUploadUrl>' \ --header 'Authorization: Bearer <access_token>' \ --header 'Content-Type: application/json' \ --header 'User-Agent: <your-app-name>/<version> (<contact-email-or-url>)' \ --data '[ @@ Replace: -- `<access_token>` with the access token from Step 1 -- `<compact>` with the lower-cased compact abbreviation (e.g., `aslp`, `octp`, or `coun`) - this information was - provided in the email. -- `<jurisdiction>` with your lower-cased two-letter state code (e.g., `ky`) - this information was provided in the email -- The example payload shown here with your test license data -Note: The URL provided during onboarding and is already configured for your jurisdiction and compact. +- `<access_token>` with the access token from Step 1 (in the Authorization header) +- The example payload shown here with your test license data + +Note: `<licenseUploadUrl>` is provided during onboarding and is already configured for your jurisdiction and compact.Also applies to: 147-154
🧹 Nitpick comments (2)
backend/compact-connect/docs/it_staff_onboarding_instructions.md (2)
98-100: Replace bare AWS URL with a Markdown link (fixes MD034).-For more information about this authentication process, please see the following -AWS documentation: https://docs.aws.amazon.com/cognito/latest/developerguide/token-endpoint.html +For more information about this authentication process, please see the AWS documentation for the +[token endpoint](https://docs.aws.amazon.com/cognito/latest/developerguide/token-endpoint.html).
229-230: Minor grammar: “which” → “who”.-...please contact the individual which sent you the credentials. +...please contact the individual who sent you the credentials.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these settings in your CodeRabbit configuration.
📒 Files selected for processing (1)
backend/compact-connect/docs/it_staff_onboarding_instructions.md(1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-04-29T02:18:11.099Z
Learnt from: landonshumway-ia
PR: csg-org/CompactConnect#769
File: backend/compact-connect/lambdas/python/common/cc_common/data_model/schema/adverse_action/record.py:40-43
Timestamp: 2025-04-29T02:18:11.099Z
Learning: In the CompactConnect codebase, API design follows a pattern where fields are either provided with valid values or omitted entirely. Null values are not allowed, even for optional fields. This applies to Marshmallow schemas where fields are configured with `required=False, allow_none=False`.
Applied to files:
backend/compact-connect/docs/it_staff_onboarding_instructions.md
🪛 LanguageTool
backend/compact-connect/docs/it_staff_onboarding_instructions.md
[grammar] ~6-~6: There might be a mistake here.
Context: ...s with licenses in good standing to work across state lines without obtaining add...
(QB_NEW_EN)
[grammar] ~14-~14: Ensure spelling is correct
Context: ...to-date with your state's latest license information - Reduce Manual Work: Eliminate the nee...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~16-~16: Ensure spelling is correct
Context: ...e need for manual license data entry by staff - Improve Accuracy: Minimize human erro...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~17-~17: Ensure spelling is correct
Context: ...*: Minimize human error in license data transmission - Support Interstate Mobility: Enable q...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~19-~19: Ensure spelling is correct
Context: ... your state's requirements as a compact member This document outlines the technical pro...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~22-~22: There might be a mistake here.
Context: ... establish a secure, reliable connection between your licensing systems and the C...
(QB_NEW_EN)
[grammar] ~25-~25: Ensure spelling is correct
Context: ...CompactConnect platform. ## Credential Security You have received a one-time use link to...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~27-~27: There might be a mistake here.
Context: ...long with an email containing contextual information about your integration. Afte...
(QB_NEW_EN)
[grammar] ~30-~30: Ensure spelling is correct
Context: ... password manager or secrets management system 2. Do not share these credentials with unau...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~31-~31: Ensure spelling is correct
Context: ...are these credentials with unauthorized personnel 3. Do not hardcode these credentials in sou...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~33-~33: Ensure spelling is correct
Context: ...pact, state, URLs) for reference during integration > Important: If the link provided has a...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~56-~56: Ensure spelling is correct
Context: ...ntication Process for Uploading License Data Follow these steps to obtain an access t...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~60-~60: Ensure spelling is correct
Context: ...se API: ### Step 1: Generate an Access Token You must first obtain an access token to...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~63-~63: There might be a mistake here.
Context: ...demonstrates how to generate a token for the beta environment, you should imp...
(QB_NEW_EN)
[grammar] ~64-~64: There might be a mistake here.
Context: ...application's programming language using appropriate HTTPS request libraries: > ...
(QB_NEW_EN)
[grammar] ~80-~80: There might be a mistake here.
Context: ...isdiction>/.write' ``` Replace: - <clientId> with your client ID - ``...
(QB_NEW_EN)
[grammar] ~81-~81: There might be a mistake here.
Context: ...place: - <clientId> with your client ID - <clientSecret> with your client secret - `<jurisdicti...
(QB_NEW_EN)
[grammar] ~82-~82: There might be a mistake here.
Context: ... <clientSecret> with your client secret - <jurisdiction> with your lower-cased two-letter state...
(QB_NEW_EN)
[grammar] ~84-~84: Ensure spelling is correct
Context: ... this information was provided in the email - <compact> with the lower-cased compact abbreviat...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~85-~85: There might be a mistake here.
Context: ... for the 'Occupational Therapy' Compact, aslp for 'Audiology and Speech Language Pat...
(QB_NEW_EN)
[grammar] ~87-~87: Ensure spelling is correct
Context: ... this information was provided in the email Example response: ```json { "access_to...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~98-~98: There might be a mistake here.
Context: ...cation process, please see the following AWS documentation: https://docs.aws.amaz...
(QB_NEW_EN)
[grammar] ~106-~106: Ensure spelling is correct
Context: ...Step 2: Upload License Data to the Beta Environment The CompactConnect License API can be ca...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~108-~108: There might be a mistake here.
Context: ... which takes in a list of license record objects. The following curl command exam...
(QB_NEW_EN)
[grammar] ~112-~112: There might be a mistake here.
Context: ...00 license records per request). See the Technical User Guide for ...
(QB_NEW_EN)
[grammar] ~147-~147: There might be a mistake here.
Context: ... "npi":"1234567890" } ]' ``` Replace: - <access_token> with the access token from Step 1 - `<...
(QB_NEW_EN)
[grammar] ~148-~148: There might be a mistake here.
Context: ...token>with the access token from Step 1 -` with the lower-cased compact abbreviat...
(QB_NEW_EN)
[grammar] ~151-~151: Ensure spelling is correct
Context: ... - this information was provided in the email - The example payload shown here with your...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~155-~155: Ensure spelling is correct
Context: ...lternative: Upload License Data via CSV File In addition to calling the POST endpoint...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~160-~160: There might be a mistake here.
Context: ... formatting requirements, and the upload process, please refer to [the technical ...
(QB_NEW_EN)
[grammar] ~165-~165: There might be a mistake here.
Context: ...h descriptions of each field, please see [the technical user guide](./README.md#f...
(QB_NEW_EN)
[grammar] ~169-~169: There might be a mistake here.
Context: ...compactEligibility cannot be "eligible" - licenseType must match exactly with one of the vali...
(QB_NEW_EN)
[grammar] ~170-~170: Ensure spelling is correct
Context: ...ne of the valid types for the specified compact - All date fields must use the `YYYY-MM-DD...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~171-~171: Ensure spelling is correct
Context: ...l date fields must use the YYYY-MM-DD format - The API does not accept null values. F...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~188-~188: There might be a mistake here.
Context: ...age": "OK" } ``` ### 2. Error Responses If you receive an error response, check ...
(QB_NEW_EN)
[grammar] ~197-~197: There might be a mistake here.
Context: ...g your request ### 3. Validation Errors If your license data fails validation, t...
(QB_NEW_EN)
[grammar] ~198-~198: There might be a mistake here.
Context: ...a 400 status code with details about the validation errors in the response body. ...
(QB_NEW_EN)
[grammar] ~217-~217: Ensure spelling is correct
Context: ...quired fields are present and formatted correctly - Verify that licenseType matches exactl...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~227-~227: Ensure spelling is correct
Context: ...our application code.** ## Support and Feedback If you encounter any issues, have questi...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~229-~229: There might be a mistake here.
Context: ...ck based on your experience working with the CompactConnect API, please contact t...
(QB_NEW_EN)
[grammar] ~230-~230: Ensure spelling is correct
Context: ...nect API, please contact the individual which sent you the credentials.
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
🪛 markdownlint-cli2 (0.17.2)
backend/compact-connect/docs/it_staff_onboarding_instructions.md
99-99: Bare URL used
(MD034, no-bare-urls)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: TestPython
🔇 Additional comments (3)
backend/compact-connect/docs/it_staff_onboarding_instructions.md (3)
168-173: Good: Clear schema constraints and explicit “no nulls” policy.Calls out formatting rules and the prohibition on null values with actionable alternatives. Aligns with codebase practice (omit optional fields; do not send nulls).
188-195: Good: Actionable error mapping for 403 (User‑Agent) and 415 (Content‑Type).This directly addresses MN feedback and will reduce onboarding friction.
91-96: Good: Token value now uses a non‑JWT placeholder (avoids secret scanner false positives).
|
@jlkravitz , ready for you |
Co-authored-by: Joshua Kravitz <jlkravitz@gmail.com>
There was a problem hiding this comment.
Actionable comments posted: 0
♻️ Duplicate comments (5)
backend/compact-connect/docs/it_staff_onboarding_instructions.md (5)
118-119: Headers are correctly documented (Content-Type and User-Agent).Good inclusion; this aligns with MN feedback and reduces 403/415 support churn.
172-173: Explicit “no nulls” rule is clearly stated and consistent with API behavior.This matches the codebase pattern (allow_none=False) and will prevent 400s from NULLs.
178-186: Clear separation of synchronous validation (200) vs asynchronous ingest.Wording is precise; reduces confusion about “validated” vs “accepted.”
192-195: Actionable error guidance for 403 (User-Agent) and 415 (Content-Type).Nice addition; ties misconfigurations to status codes explicitly.
1-1: Remove the UTF-8 BOM at file start.The invisible BOM character before the first “#” can break linters and some tooling.
Apply:
-# CompactConnect Automated License Data Upload Instructions (Beta Release) +# CompactConnect Automated License Data Upload Instructions (Beta Release)
🧹 Nitpick comments (4)
backend/compact-connect/docs/it_staff_onboarding_instructions.md (4)
116-121: Resolve Step 2 URL/placeholder inconsistency; prefer the issued .The curl uses /, but the note says you provide a pre-scoped URL. Use the provided URL and remove now-misleading bullets.
-```bash -curl --location --request POST 'https://api.beta.compactconnect.org/v1/compacts/<compact>/jurisdictions/<jurisdiction>/licenses' \ +```bash +curl --location --request POST '<licenseUploadUrl>' \ --header 'Authorization: Bearer <access_token>' \ --header 'Content-Type: application/json' \ --header 'User-Agent: <your-app-name>/<version> (<contact-email-or-url>)' \ --data '[ @@ Replace: -- `<access_token>` with the access token from Step 1 -- `<compact>` with the lower-cased compact abbreviation (e.g., `aslp`, `octp`, or `coun`) - this information was - provided in the email. -- `<jurisdiction>` with your lower-cased two-letter state code (e.g., `ky`) - this information was provided in the email -- The example payload shown here with your test license data -Note: The URL was provided during onboarding and is already configured for your jurisdiction and compact. +- `<access_token>` with the access token from Step 1 (in the Authorization header) +- The example payload shown here with your test license data + +Note: `<licenseUploadUrl>` was provided during onboarding and is already configured for your jurisdiction and compact.Also applies to: 147-154
99-99: Avoid bare URL (MD034); convert to a Markdown link.This fixes markdownlint and improves readability.
-For more information about this authentication process, please see the following -AWS documentation: https://docs.aws.amazon.com/cognito/latest/developerguide/token-endpoint.html +For more information about this authentication process, please see the following +[AWS documentation](https://docs.aws.amazon.com/cognito/latest/developerguide/token-endpoint.html).
108-115: Optional: Add a short “Required headers” callout before the curl.A brief lead-in list improves scannability for implementers.
The CompactConnect License API can be called through a POST REST endpoint which takes in a list of license record objects. The following curl command example demonstrates how to upload license data into the **beta** environment, but you should implement this API call in your application's programming language using appropriate HTTPS request libraries. You will need to replace the example payload with valid license data that includes the correct license types for your specific compact (you can send up to 100 license records per request). See the [Technical User Guide](./README.md) for more details about API use: + +Required headers: +- Authorization: Bearer <access_token> +- Content-Type: application/json +- User-Agent: <your-app-name>/<version> (<contact-email-or-url>)
229-231: Grammar nit: “which” → “who”.Minor polish for the closing sentence.
-please contact the individual which sent you the credentials. +please contact the individual who sent you the credentials.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (1)
backend/compact-connect/docs/it_staff_onboarding_instructions.md(1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-04-29T02:18:11.099Z
Learnt from: landonshumway-ia
PR: csg-org/CompactConnect#769
File: backend/compact-connect/lambdas/python/common/cc_common/data_model/schema/adverse_action/record.py:40-43
Timestamp: 2025-04-29T02:18:11.099Z
Learning: In the CompactConnect codebase, API design follows a pattern where fields are either provided with valid values or omitted entirely. Null values are not allowed, even for optional fields. This applies to Marshmallow schemas where fields are configured with `required=False, allow_none=False`.
Applied to files:
backend/compact-connect/docs/it_staff_onboarding_instructions.md
🪛 LanguageTool
backend/compact-connect/docs/it_staff_onboarding_instructions.md
[grammar] ~6-~6: There might be a mistake here.
Context: ...s with licenses in good standing to work across state lines without obtaining add...
(QB_NEW_EN)
[grammar] ~14-~14: Ensure spelling is correct
Context: ...to-date with your state's latest license information - Reduce Manual Work: Eliminate the nee...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~16-~16: Ensure spelling is correct
Context: ...e need for manual license data entry by staff - Improve Accuracy: Minimize human erro...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~17-~17: Ensure spelling is correct
Context: ...*: Minimize human error in license data transmission - Support Interstate Mobility: Enable q...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~19-~19: Ensure spelling is correct
Context: ... your state's requirements as a compact member This document outlines the technical pro...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~22-~22: There might be a mistake here.
Context: ... establish a secure, reliable connection between your licensing systems and the C...
(QB_NEW_EN)
[grammar] ~25-~25: Ensure spelling is correct
Context: ...CompactConnect platform. ## Credential Security You have received a one-time use link to...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~27-~27: There might be a mistake here.
Context: ...long with an email containing contextual information about your integration. Afte...
(QB_NEW_EN)
[grammar] ~30-~30: Ensure spelling is correct
Context: ... password manager or secrets management system 2. Do not share these credentials with unau...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~31-~31: Ensure spelling is correct
Context: ...are these credentials with unauthorized personnel 3. Do not hardcode these credentials in sou...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~33-~33: Ensure spelling is correct
Context: ...pact, state, URLs) for reference during integration > Important: If the link provided has a...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~56-~56: Ensure spelling is correct
Context: ...ntication Process for Uploading License Data Follow these steps to obtain an access t...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~60-~60: Ensure spelling is correct
Context: ...se API: ### Step 1: Generate an Access Token You must first obtain an access token to...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~63-~63: There might be a mistake here.
Context: ...demonstrates how to generate a token for the beta environment, you should imp...
(QB_NEW_EN)
[grammar] ~64-~64: There might be a mistake here.
Context: ...application's programming language using appropriate HTTPS request libraries: > ...
(QB_NEW_EN)
[grammar] ~80-~80: There might be a mistake here.
Context: ...isdiction>/.write' ``` Replace: - <clientId> with your client ID - ``...
(QB_NEW_EN)
[grammar] ~81-~81: There might be a mistake here.
Context: ...place: - <clientId> with your client ID - <clientSecret> with your client secret - `<jurisdicti...
(QB_NEW_EN)
[grammar] ~82-~82: There might be a mistake here.
Context: ... <clientSecret> with your client secret - <jurisdiction> with your lower-cased two-letter state...
(QB_NEW_EN)
[grammar] ~84-~84: Ensure spelling is correct
Context: ... this information was provided in the email - <compact> with the lower-cased compact abbreviat...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~85-~85: There might be a mistake here.
Context: ... for the 'Occupational Therapy' Compact, aslp for 'Audiology and Speech Language Pat...
(QB_NEW_EN)
[grammar] ~87-~87: Ensure spelling is correct
Context: ... this information was provided in the email Example response: ```json { "access_to...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~98-~98: There might be a mistake here.
Context: ...cation process, please see the following AWS documentation: https://docs.aws.amaz...
(QB_NEW_EN)
[grammar] ~106-~106: Ensure spelling is correct
Context: ...Step 2: Upload License Data to the Beta Environment The CompactConnect License API can be ca...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~108-~108: There might be a mistake here.
Context: ... which takes in a list of license record objects. The following curl command exam...
(QB_NEW_EN)
[grammar] ~112-~112: There might be a mistake here.
Context: ...00 license records per request). See the Technical User Guide for ...
(QB_NEW_EN)
[grammar] ~147-~147: There might be a mistake here.
Context: ... "npi":"1234567890" } ]' ``` Replace: - <access_token> with the access token from Step 1 - `<...
(QB_NEW_EN)
[grammar] ~148-~148: There might be a mistake here.
Context: ...token>with the access token from Step 1 -` with the lower-cased compact abbreviat...
(QB_NEW_EN)
[grammar] ~150-~150: There might be a mistake here.
Context: ... information was provided in the email. - <jurisdiction> with your lower-cased two-letter state...
(QB_NEW_EN)
[grammar] ~151-~151: Ensure spelling is correct
Context: ... - this information was provided in the email - The example payload shown here with your...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~155-~155: Ensure spelling is correct
Context: ...lternative: Upload License Data via CSV File In addition to calling the POST endpoint...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~160-~160: There might be a mistake here.
Context: ... formatting requirements, and the upload process, please refer to [the technical ...
(QB_NEW_EN)
[grammar] ~165-~165: There might be a mistake here.
Context: ...h descriptions of each field, please see [the technical user guide](./README.md#f...
(QB_NEW_EN)
[grammar] ~169-~169: There might be a mistake here.
Context: ...compactEligibility cannot be "eligible" - licenseType must match exactly with one of the vali...
(QB_NEW_EN)
[grammar] ~170-~170: Ensure spelling is correct
Context: ...ne of the valid types for the specified compact - All date fields must use the `YYYY-MM-DD...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~171-~171: Ensure spelling is correct
Context: ...l date fields must use the YYYY-MM-DD format - The API does not accept null values. F...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~188-~188: There might be a mistake here.
Context: ...age": "OK" } ``` ### 2. Error Responses If you receive an error response, check ...
(QB_NEW_EN)
[grammar] ~197-~197: There might be a mistake here.
Context: ...g your request ### 3. Validation Errors If your license data fails validation, t...
(QB_NEW_EN)
[grammar] ~198-~198: There might be a mistake here.
Context: ...a 400 status code with details about the validation errors in the response body. ...
(QB_NEW_EN)
[grammar] ~217-~217: Ensure spelling is correct
Context: ...quired fields are present and formatted correctly - Verify that licenseType matches exactl...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~227-~227: Ensure spelling is correct
Context: ...our application code.** ## Support and Feedback If you encounter any issues, have questi...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~229-~229: There might be a mistake here.
Context: ...ck based on your experience working with the CompactConnect API, please contact t...
(QB_NEW_EN)
[grammar] ~230-~230: Ensure spelling is correct
Context: ...nect API, please contact the individual which sent you the credentials.
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
🪛 markdownlint-cli2 (0.17.2)
backend/compact-connect/docs/it_staff_onboarding_instructions.md
99-99: Bare URL used
(MD034, no-bare-urls)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: TestPython
jlkravitz
left a comment
There was a problem hiding this comment.
@isabeleliassen good to merge!
Description List
Testing List
Closes #928
Summary by CodeRabbit