Repository for API integration related operations.
npm install @phase21/api-integrationsRepository for managing API integrations.
See frontend's README.
1. Run the script
``shell`
pnpm generate-airnode-feed-deployment
2. Select the API.
`bash`
$ ts-node src/config-generation/airnode-feed/generate-deployment.ts
? Select an API to create deployment: › - Use arrow-keys. Return to submit.
❯ api-1
api-2
some-api
...
3. Select the deployment type.
``
? Select the deployment type: › - Use arrow-keys. Return to submit.
❯ staging
candidate
4. Deployment will be created under ./data/apis/.
- Deployment folder for the each API has the below structure:
``
.
├── active-deployments
└── candidate-deployments
└── api3-20231101-airnode-feed.json
- Deployments names are created in this format: api3-YYYYMMDD-airnode-feed.json and there should be only one or nocandidate-deployments
deployments under .candidate-deployment
- Once a is deployed by the API provider, deployment under the candidate-deployment will beactive-deployments
manually moved under . active-deployments will be confirmed with CI scripts. If there is noairnode-feed
heartbeat from the deployment, CI won't allow pushing changes to the repository.
- Deployments will identified by configuration file's hash.
#### Heartbeat
Airnode feed minutely log the below string and the string will be parsed and returned through an API for this repository
to check deployments.
``
${airnodeAddress} - ${stage} - ${airnodeFeedVersion} - ${currentTimestamp} - ${deploymentTimestamp} - ${airnodeFeedConfigHash} - ${heartbeatSignature}
Through the airnodeFeedConfigHash it will be possible to check if the correct deployment is deployed.
#### api-data.json
There is api-data.json file for each API provider in data/apis/ path. This file includes the
below information.
- alias: Unique alias used for API.name
- : Name of the API for public use.airnode
- : Airnode address of the API.xpub
- : Extended public key.supportedFeedsInBatches
- : Name of the data feeds in batches supported by API, seperated by OIS titles.deploymentLocations
- : Deployment locations where API provider deployed their Airnode feed to.homepageUrl
- : API provider's website's homepage URL.verifiedBaseUrl
- : URL where includes API provider's Airnode address in it's TXT records for people to be able to besignedApiUrl
confirm the Airnode address.
- : URL for the Signed API deployed by the API provider.productionSignedApiUrls
- : URLs of the Signed APIs where Airnode feeds deployed by the API provider push data to.stagingSignedApiUrl
- : URL of the Signed API where staging Airnode feed deployed by the API provider push data to.
1. Create a blueprint for the feed using pnpm add-blueprint
`
> @phase21/api-integrations@1.5.0 add-blueprint /home/m3/meto_ws/api3_ws/byog/PHASE-2.1/final/api-integrations
> ts-node src/config-generation/add-new-data-feed-blueprint.ts
✔ Write data feed's name: … SOMETHING/USD
✔ Select an API to create data feed: › nodary
✔ Select the OIS: › Nodary
✔ Write the value for the parameter "path" (leave empty to pass)": … /feed/latest
✔ Write the value for the parameter "name" (leave empty to pass)": … SOMETHING/USD
✔ Write post processing snippet for "SOMETHING/USD": … (response) => { return response.value }
`
2. Add data feed to the corresponding supportedFeedsInBatches in corresponding api-data.jsonpnpm sync-oises`
3. Run