-
Notifications
You must be signed in to change notification settings - Fork 33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Docs/blog api img #3249
Merged
Merged
Docs/blog api img #3249
Changes from all commits
Commits
Show all changes
9 commits
Select commit
Hold shift + click to select a range
9963d4c
developer blog outline
Defi-Moses d35002c
Merge branch 'docs/blog' of https://github.com/synapsecns/sanguine in…
lawsonkight 28ba7e6
changing home route
Defi-Moses 2302be0
Merge branch 'docs/blog' of https://github.com/synapsecns/sanguine in…
lawsonkight 7613542
api graphic v1
lawsonkight f7515a6
increase image size
lawsonkight eeb8cf8
svg flow graphic
lawsonkight ac3b326
fix typo
lawsonkight c837def
merge master
Defi-Moses File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
--- | ||
slug: rest-api-now-live | ||
title: Announcing the Synapse REST API | ||
# authors: [synapse] | ||
tags: [api, update] | ||
--- | ||
|
||
import { APIFlow } from '@site/src/components/APIFlow' | ||
|
||
We are excited to announce the launch of the **Synapse REST API**. | ||
|
||
Last week, we launched the Synapse REST API: [api.synapseprotocol.com](https://api.synapseprotocol.com). The new update is key in making Synapse easier to integrate for applications. | ||
|
||
<!--truncate--> | ||
|
||
## Summary | ||
|
||
The REST API is a restful interface for applications to query, construct, and initiate cross-chain transactions. The service comes with supporting modules for querying liquidity, transaction status, and more. The aim of the API is to enable applications to integrate cross-chain functionality through an API call. | ||
|
||
<figure> | ||
<APIFlow /> | ||
<figcaption>API flow: get Quote, get txData, sign transaction</figcaption> | ||
</figure> | ||
|
||
## Why it Matters | ||
|
||
The REST API makes it significantly easier for aggregators to integrate with the Synapse Bridge, complete with supplementary modules for returning key information like transaction status to users , as well as standardizing and sanitizing inputs and outputs. Rather than interact with complex contracts, aggregators can interact with a simple /bridge endpoint. | ||
|
||
The REST API is also built with third-party developers in mind. Many people run external services around the Synapse Bridge: from arbitrage bots, to on-chain AI agents. The REST API makes it much simpler to interact with the Synapse Bridge from any environment, with just an http request. Third party developers also don't have to sacrifice complexity. | ||
|
||
## Challenges | ||
|
||
When building the REST API we ran into a couple challenges that have created a more robust developer experience. | ||
|
||
*Standardizing Constants:* We needed a set of constants to verify all inputs against, so that users did not attempt to bridge or swap with unsupported assets/chains. This launch gave us the chance to standardize the Synapse Constants library, and extend this library throughout other services. | ||
|
||
*Liquidity Warnings:* When bridging programmatically, it's harder to identify abnormalities, thus we added different endpoints to help applications retrieve liquidity parameters before bridging. Responses also include detailed information about what the expected amount will be. | ||
|
||
## Launch Details | ||
|
||
Structurally, the REST API is a wrapper around the Synapse SDK – the primary abstraction of the Synapse Contracts. The modules allow users to swap, bridge, and a host of other supporting functions. This level of abstraction is key for applications that want to interact with the Synapse Contracts from any framework, in a standardized manner. | ||
|
||
This update incorporated the addition of new methods to support aggregator integrations such as: | ||
|
||
`/bridgeTxStatus` | ||
Enables developers to retrieve the status of any bridge transaction. Helpful for debugging as well as providing transaction level information to the user. | ||
|
||
`/destinationTokens` | ||
Returns a list of tokens that can be bridged to (given an input token), giving developers clarity on where they can bridge to. | ||
|
||
`/bridgeLimits` | ||
Returns a max/min amount of tokens to be bridged, giving an accurate representation of liquidity for any possible bridge route. | ||
|
||
Other main changes include: | ||
- Standardized RESTful responses, eliminated mixed response types (Markup and JSON) to now consistently return JSON for all endpoints. | ||
- Enhanced error handling using input validations with express-validator, middleware for error handling. Includes checks for unsupported chains, bridge modules, tokens and a friendly error message indicating specific error messages. | ||
- Architectural improvements including a traditional MVC approach, separating routes and controllers, improved code readability and organization, so we can easily compose new routes | ||
- Development workflow updates, like yarn dev which has hot reloading so we don't need to manually stop and restart the server during development | ||
|
||
Swagger documentation was also included in the latest release to assist developer onboarding. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
synapse: | ||
name: Synapse Protocol Developers | ||
title: Synapse Protocol Developers | ||
url: https://synapseprotocol.com |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
--- | ||
slug: welcome | ||
title: Welcome | ||
# authors: [synapse] | ||
tags: [synapse] | ||
--- | ||
|
||
|
||
We are happy to announce the **Synapse Technical Blog**! | ||
|
||
On this blog, we will share insights, updates, and deep dives into our latest launches and developments from a developer's perspective. Here, you'll find detailed information about our newest features, APIs, and technical improvements that power Synapse Protocol. | ||
|
||
|
||
<!--truncate--> | ||
|
||
## What to Expect | ||
|
||
Our blog posts will cover a range of topics, including: | ||
|
||
- New feature launches and updates | ||
- Technical deep dives into our architecture | ||
- API documentation and usage guides | ||
- Performance improvements and optimizations | ||
- Developer tools and resources | ||
|
||
Whether you're an integrator, a third-party developer, or just curious about the technical aspects of Synapse, this blog is for you. | ||
|
||
## Latest Articles | ||
|
||
Here's a list of our most recent tech blog posts: | ||
|
||
- [REST API Now Live](2024-10-10-rest-api-post.md) - October 10, 2024 | ||
Learn about our new REST API, its features, and how it simplifies integration for developers. | ||
|
||
|
||
|
||
## Stay Connected | ||
|
||
To stay up-to-date with our latest tech developments: | ||
|
||
- Follow us on [Twitter](https://twitter.com/synapseprotocol) | ||
- Join our [Discord](https://discord.gg/synapseprotocol) | ||
- Check out our [GitHub](https://github.com/synapsecns) | ||
|
||
We're excited to share our journey with you as we continue to innovate and improve the Synapse Protocol. Happy reading! |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
--- | ||
sidebar_label: Supported Routes | ||
--- | ||
|
||
# Supported Routes | ||
|
||
Use the [Synapse Bridge](https://synapseprotocol.com) to browse supported tokens and chains. | ||
|
||
:::tip Routes | ||
|
||
Route availability is determined by the amount you wish to bridge. Use the [Synapse Bridge](https://synapseprotocol.com) to see if a route between a given pair exists. | ||
|
||
::: | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
--- | ||
sidebar_label: Supported Routes | ||
--- | ||
|
||
import Routes from '@site/src/components/Routes' | ||
|
||
# Supported Routes | ||
|
||
Supported tokens for each chain. | ||
|
||
:::tip Routes | ||
|
||
Route availability is determined by the amount you wish to bridge. Use the [Synapse Bridge](https://synapseprotocol.com) to see if a route between a given pair exists. | ||
|
||
::: | ||
|
||
<Routes /> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,203 @@ | ||
export const APIFlow = () => { | ||
return ( | ||
<svg | ||
width="100%" | ||
viewBox="-240 0 480 120" | ||
fill="none" | ||
xmlns="http://www.w3.org/2000/svg" | ||
className="flowAnimation" | ||
> | ||
<defs> | ||
<path id="synFigDiamond" d="M4 0 8 4 4 8 0 4z" /> | ||
<path id="synFigArrow" d="M8 4 0 0 0 8z" /> | ||
<marker | ||
id="synFigDiamondPurple" | ||
viewBox="0 0 8 8" | ||
refX="4" | ||
refY="4" | ||
markerWidth="7" | ||
markerHeight="7" | ||
fill="var(--syn-fig-purple)" | ||
> | ||
<use href="#synFigDiamond" /> | ||
</marker> | ||
<marker | ||
id="synFigDiamondMagenta" | ||
viewBox="0 0 8 8" | ||
refX="4" | ||
refY="4" | ||
markerWidth="7" | ||
markerHeight="7" | ||
fill="var(--syn-fig-magenta)" | ||
> | ||
<use href="#synFigDiamond" /> | ||
</marker> | ||
<marker | ||
id="synFigArrowMagenta" | ||
viewBox="0 0 8 8" | ||
refX="4" | ||
refY="4" | ||
markerWidth="7" | ||
markerHeight="7" | ||
orient="auto" | ||
fill="var(--syn-fig-magenta)" | ||
> | ||
<use href="#synFigArrow" /> | ||
</marker> | ||
<marker | ||
id="synFigArrowPurple" | ||
viewBox="0 0 8 8" | ||
refX="4" | ||
refY="4" | ||
markerWidth="7" | ||
markerHeight="7" | ||
orient="auto" | ||
fill="var(--syn-fig-purple)" | ||
> | ||
<use href="#synFigArrow" /> | ||
</marker> | ||
<marker | ||
id="synFigArrowGreen" | ||
viewBox="0 0 8 8" | ||
refX="4" | ||
refY="4" | ||
markerWidth="7" | ||
markerHeight="7" | ||
orient="auto-start-reverse" | ||
fill="var(--syn-fig-green)" | ||
> | ||
<use href="#synFigArrow" /> | ||
</marker> | ||
<marker | ||
id="synFigArrowBlue" | ||
viewBox="0 0 8 8" | ||
refX="4" | ||
refY="4" | ||
markerWidth="7" | ||
markerHeight="7" | ||
orient="auto-start-reverse" | ||
fill="var(--syn-fig-blue)" | ||
> | ||
<use href="#synFigArrow" /> | ||
</marker> | ||
</defs> | ||
<g fill="currentcolor" fillOpacity=".05"> | ||
<rect x="-50%" rx="4" y="0" width="100%" height="56" /> | ||
<rect x="-50%" rx="4" y="64" width="100%" height="56" /> | ||
<rect x="112" rx="4" width="128" height="100%" /> | ||
|
||
<rect x="-128" rx="4" y="12" width="72" height="32" /> | ||
<rect x="-32" rx="4" y="12" width="128" height="32" /> | ||
<rect x="132" rx="4" y="12" width="88" height="32" /> | ||
</g> | ||
<path | ||
stroke="var(--syn-fig-green)" | ||
fill="none" | ||
d="M-180 84 H-92 V44" | ||
markerStart="url(#synFigArrowGreen)" | ||
markerEnd="url(#synFigArrowGreen)" | ||
/> | ||
<path | ||
stroke="var(--syn-fig-blue)" | ||
fill="none" | ||
d="M-180 92 H32 V44" | ||
markerStart="url(#synFigArrowBlue)" | ||
markerEnd="url(#synFigArrowBlue)" | ||
/> | ||
<path | ||
stroke="var(--syn-fig-purple)" | ||
fill="none" | ||
d="M-180 100 H104 V28 H132" | ||
markerStart="url(#synFigDiamondPurple)" | ||
markerEnd="url(#synFigArrowPurple)" | ||
/> | ||
<path | ||
stroke="var(--syn-fig-magenta)" | ||
fill="none" | ||
d="M176 44 V77" | ||
markerStart="url(#synFigDiamondMagenta)" | ||
markerEnd="url(#synFigArrowMagenta)" | ||
/> | ||
<g | ||
fill="currentcolor" | ||
dominantBaseline="middle" | ||
style={{ fontSize: '.9em' }} | ||
> | ||
<text x="-216" y="29"> | ||
REST API | ||
</text> | ||
<g textAnchor="middle" fill="var(--syn-method)"> | ||
<text x="-92" y="29"> | ||
/bridge | ||
</text> | ||
<text x="32" y="29"> | ||
/bridgeTxInfo | ||
</text> | ||
<text x="176" y="29"> | ||
Contract | ||
</text> | ||
</g> | ||
<text x="-216" y="93"> | ||
App | ||
</text> | ||
<text x="176" y="93" textAnchor="middle"> | ||
Chain | ||
</text> | ||
</g> | ||
|
||
<g strokeWidth=".5" fill="var(--ifm-background-surface-color)"> | ||
<rect | ||
x="-120" | ||
y="51" | ||
width="56" | ||
height="17" | ||
rx="2" | ||
stroke="var(--syn-fig-green)" | ||
/> | ||
<rect | ||
x="8" | ||
y="51" | ||
width="48" | ||
height="17" | ||
rx="2" | ||
stroke="var(--syn-fig-blue)" | ||
/> | ||
<rect | ||
x="82" | ||
y="51" | ||
width="44" | ||
height="17" | ||
rx="2" | ||
stroke="var(--syn-fig-purple)" | ||
/> | ||
<rect | ||
x="148" | ||
y="51" | ||
width="56" | ||
height="17" | ||
rx="2" | ||
stroke="var(--syn-fig-magenta)" | ||
/> | ||
</g> | ||
<g | ||
className="temp" | ||
textAnchor="middle" | ||
dominantBaseline="middle" | ||
style={{ fontSize: '.75em' }} | ||
> | ||
<text x="-92" y="60" fill="var(--syn-fig-green)"> | ||
Quote | ||
</text> | ||
<text x="32" y="60" fill="var(--syn-fig-blue)"> | ||
Data | ||
</text> | ||
<text x="104" y="60" fill="var(--syn-fig-purple)"> | ||
Sign | ||
</text> | ||
<text x="176" y="60" fill="var(--syn-fig-magenta)"> | ||
Submit | ||
</text> | ||
</g> | ||
</svg> | ||
) | ||
} |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Verify the
editUrl
path for docs configuration.The
editUrl
path has been updated to include 'blog-posts', which seems inconsistent with thedocs
configuration. This might lead to incorrect edit links for documentation pages.Consider reverting this change or updating it to the correct path for documentation edits:
📝 Committable suggestion