[Docs] Improve documentation around building a new Ocean integration
User description
Description
What - Revamp the documentation around building a new integration
Why - This gives user a much clearer explanation and guidance on developing an Ocean integration, handholding them through a demo creating an integration from scratch and helps avoid common errors and issues around creating an Ocean integtrations
How - In this documentation guide, we walk users through creating their own integration (using the Jira integration) from scratch following best practices and philosophies adopted in Ocean integrations..
Type of change
Please leave one option from the following and delete the rest:
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] New Integration (non-breaking change which adds a new integration)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] Non-breaking change (fix of existing functionality that will not change current behavior)
- [ ] Documentation (added/updated documentation)
All tests should be run against the port production environment(using a testing org).
Core testing checklist
- [ ] Integration able to create all default resources from scratch
- [ ] Resync finishes successfully
- [ ] Resync able to create entities
- [ ] Resync able to update entities
- [ ] Resync able to detect and delete entities
- [ ] Scheduled resync able to abort existing resync and start a new one
- [ ] Tested with at least 2 integrations from scratch
- [ ] Tested with Kafka and Polling event listeners
- [ ] Tested deletion of entities that don't pass the selector
Integration testing checklist
- [ ] Integration able to create all default resources from scratch
- [ ] Resync able to create entities
- [ ] Resync able to update entities
- [ ] Resync able to detect and delete entities
- [ ] Resync finishes successfully
- [ ] If new resource kind is added or updated in the integration, add example raw data, mapping and expected result to the
examplesfolder in the integration directory. - [ ] If resource kind is updated, run the integration with the example data and check if the expected result is achieved
- [ ] If new resource kind is added or updated, validate that live-events for that resource are working as expected
- [ ] Docs PR link here
Preflight checklist
- [ ] Handled rate limiting
- [ ] Handled pagination
- [ ] Implemented the code in async
- [ ] Support Multi account
Screenshots
Include screenshots from your environment showing how the resources of the integration will look.
API Documentation
Provide links to the API documentation used for this integration.
PR Type
Documentation
Description
-
Revamped documentation for building Ocean integrations.
-
Added detailed guides for creating Jira integration.
-
Introduced step-by-step instructions for configuration, testing, and publishing.
-
Enhanced clarity on integration structure and webhook implementation.
Changes walkthrough 📝
| Relevant files | |||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Documentation | 11 files
|
Need help?
Type /help how to ...in the comments thread for any questions about Qodo Merge usage.Check out the documentation for more information.
PR Reviewer Guide 🔍
Here are some key observations to aid the review process:
| ⏱️ Estimated effort to review: 3 🔵🔵🔵⚪⚪ |
| 🧪 No relevant tests |
| 🔒 No security concerns identified |
⚡ Recommended focus areas for reviewCode Consistency
refresh_request_auth_creds that is defined but never used in the code examples. This could confuse readers trying to implement the integration. |
PR Code Suggestions ✨
Explore these optional code suggestions:
| Category | Suggestion | Impact |
| Possible issue |
Retry after rate limitingThe rate limit handler is called after logging the error, but the function then docs/framework-guides/docs/getting-started/implementing-an-api-client.md [187-215]
Suggestion importance[1-10]: 9__ Why: The suggestion fixes a critical issue where rate-limited requests always fail because the code doesn't retry after handling the rate limit. This change significantly improves the reliability of the API client when dealing with rate limits. | High |
Remove undefined webhook processorThe code references a docs/framework-guides/docs/getting-started/sending-data-to-port-using-resync-functions.md [223-225]
Suggestion importance[1-10]: 9__ Why: The code references a | High | |
Fix infinite loop riskThe pagination logic doesn't handle empty responses correctly. If the API docs/framework-guides/docs/getting-started/implementing-an-api-client.md [242-265]
Suggestion importance[1-10]: 8__ Why: The suggestion addresses a critical bug where the pagination logic could enter an infinite loop if the API returns empty items but still has a 'total' value greater than zero. This is a significant issue that could cause the integration to hang. | Medium | |
Handle missing header safelyThe rate limit handler doesn't check if the 'Retry-After' header exists before docs/framework-guides/docs/getting-started/implementing-an-api-client.md [180-185]
Suggestion importance[1-10]: 7__ Why: This suggestion fixes a potential KeyError exception when the 'Retry-After' header is missing from a 429 response. Adding a fallback value improves error handling and prevents crashes during rate limiting scenarios. | Medium | |
| ||
This pull request is automatically being deployed by Amplify Hosting (learn more).
Access this pull request here: https://pr-1518.d1ftd8v2gowp8w.amplifyapp.com