diff --git a/.github/workflows/update-api-docs.yaml b/.github/workflows/update-api-docs.yaml new file mode 100644 index 0000000000..8cd59fd4d7 --- /dev/null +++ b/.github/workflows/update-api-docs.yaml @@ -0,0 +1,26 @@ +--- +name: Update BitGo Express API docs + +# Kept manual until the first OpenAPI batch is added to openapi-index.ts. +on: + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }} + +permissions: + contents: read + id-token: write + +jobs: + generate-and-update-api-docs: + uses: BitGo/gha-dev-portal-updater/.github/workflows/generate-and-update.yml@645bcc9d1e669f5b53eebc0121eede056569ca1a # v5.38.0 + with: + target-repo: api-docs + service-name: platform-express + types-package-path: ./modules/express + api-spec-file: src/typedRoutes/api/openapi-index.ts + api-spec-title: BitGo Express API + codec-config-file: ./modules/express/openapi-generator.rc.js + remote-working-directory: '' + secrets: inherit diff --git a/modules/express/src/typedRoutes/api/openapi-index.ts b/modules/express/src/typedRoutes/api/openapi-index.ts new file mode 100644 index 0000000000..80b2d12bfe --- /dev/null +++ b/modules/express/src/typedRoutes/api/openapi-index.ts @@ -0,0 +1,14 @@ +import { apiSpec } from '@api-ts/io-ts-http'; +import { PostWalletSweep } from './v2/walletSweep'; + +/** + * Cumulative OpenAPI batch entrypoint. + * + * Add approved route specs here as they are introduced. Keep previously added + * routes in this object so generated/openapi-express.yaml remains cumulative. + */ +export const ExpressOpenApiSpec = apiSpec({ + 'express.wallet.sweep': { + post: PostWalletSweep, + }, +}); diff --git a/modules/express/src/typedRoutes/api/v2/walletSweep.ts b/modules/express/src/typedRoutes/api/v2/walletSweep.ts index 4225f23c84..ee4505ff45 100644 --- a/modules/express/src/typedRoutes/api/v2/walletSweep.ts +++ b/modules/express/src/typedRoutes/api/v2/walletSweep.ts @@ -1,5 +1,5 @@ import * as t from 'io-ts'; -import { httpRoute, httpRequest, optional } from '@api-ts/io-ts-http'; +import { httpRoute, httpRequest, optional, type HttpRoute } from '@api-ts/io-ts-http'; import { BitgoExpressError } from '../../schemas/error'; import { SendManyResponse } from './sendmany'; @@ -55,7 +55,7 @@ export const WalletSweepBody = { * @operationId express.wallet.sweep * @tag Express */ -export const PostWalletSweep = httpRoute({ +export const PostWalletSweep: HttpRoute<'post'> = httpRoute({ path: '/api/v2/{coin}/wallet/{id}/sweep', method: 'POST', request: httpRequest({