aboutsummaryrefslogtreecommitdiffstats
path: root/packages/sra-api
diff options
context:
space:
mode:
Diffstat (limited to 'packages/sra-api')
-rw-r--r--packages/sra-api/package.json5
-rw-r--r--packages/sra-api/src/api.ts6
-rw-r--r--packages/sra-api/src/json-schemas.ts63
-rw-r--r--packages/sra-api/src/parameters.ts1
-rw-r--r--packages/sra-api/test/api_test.ts15
-rw-r--r--packages/sra-api/tsconfig.json2
6 files changed, 68 insertions, 24 deletions
diff --git a/packages/sra-api/package.json b/packages/sra-api/package.json
index 4e0fb1637..a9bc934fe 100644
--- a/packages/sra-api/package.json
+++ b/packages/sra-api/package.json
@@ -11,12 +11,11 @@
"serve": "redoc-cli serve lib/api.json --watch",
"watch_without_deps": "run-p build-json:watch serve",
"lint": "tslint --project .",
- "test": "yarn run_mocha",
+ "test": "swagger-cli validate lib/api.json",
"rebuild_and_test": "run-s clean build test",
"test:coverage": "nyc npm run test --all && yarn coverage:report:lcov",
"coverage:report:lcov": "nyc report --reporter=text-lcov > coverage/lcov.info",
"test:circleci": "yarn test:coverage",
- "run_mocha": "mocha lib/test/**/*_test.js --exit",
"clean": "shx rm -rf lib",
"build": "tsc && yarn build-json",
"build-site": "yarn build && redoc-cli bundle lib/api.json --output public/index.html",
@@ -49,9 +48,9 @@
"mocha": "^4.0.1",
"npm-run-all": "^4.1.3",
"nyc": "^11.0.1",
- "openapi-schema-validation": "^0.4.1",
"redoc-cli": "^0.6.1",
"shx": "^0.2.2",
+ "swagger-cli": "^2.1.1",
"ts-node": "^7.0.0",
"tslint": "5.11.0",
"typescript": "2.7.1"
diff --git a/packages/sra-api/src/api.ts b/packages/sra-api/src/api.ts
index 5973e11cd..e578ddc74 100644
--- a/packages/sra-api/src/api.ts
+++ b/packages/sra-api/src/api.ts
@@ -1,12 +1,10 @@
-import { schemas } from '@0xproject/json-schemas';
import { OpenApiSpec } from '@loopback/openapi-v3-types';
import { examples } from './examples';
+import { schemas } from './json-schemas';
import { md } from './md';
import { generateParameters } from './parameters';
import { generateResponses } from './responses';
-// We need to replace the `$ref`s to be OpenAPI compliant.
-const openApiSchemas = JSON.parse(JSON.stringify(schemas).replace(/(\/\w+)/g, match => `#/components/schemas${match}`));
export const api: OpenApiSpec = {
openapi: '3.0.0',
@@ -298,6 +296,6 @@ export const api: OpenApiSpec = {
},
},
components: {
- schemas: openApiSchemas,
+ schemas,
},
};
diff --git a/packages/sra-api/src/json-schemas.ts b/packages/sra-api/src/json-schemas.ts
new file mode 100644
index 000000000..5b222a43f
--- /dev/null
+++ b/packages/sra-api/src/json-schemas.ts
@@ -0,0 +1,63 @@
+import { schemas as jsonSchemas } from '@0xproject/json-schemas';
+
+// Only include schemas we actually need
+const {
+ numberSchema,
+ addressSchema,
+ hexSchema,
+ orderHashSchema,
+ orderSchema,
+ signedOrderSchema,
+ signedOrdersSchema,
+ ordersSchema,
+ paginatedCollectionSchema,
+ relayerApiErrorResponseSchema,
+ relayerApiFeeRecipientsResponseSchema,
+ relayerApiOrderSchema,
+ relayerApiOrdersSchema,
+ relayerApiOrderConfigPayloadSchema,
+ relayerApiOrderConfigResponseSchema,
+ relayerApiOrderBookResponseSchema,
+ relayerApiAssetDataPairsResponseSchema,
+ relayerApiAssetDataTradeInfoSchema,
+ relayerApiOrdersChannelSubscribeSchema,
+ relayerApiOrdersChannelSubscribePayload,
+ relayerApiOrdersChannelUpdateSchema,
+ relayerApiOrdersResponseSchema,
+ relayerApiAssetDataPairsSchema,
+} = jsonSchemas;
+
+const usedSchemas = {
+ numberSchema,
+ addressSchema,
+ hexSchema,
+ orderHashSchema,
+ orderSchema,
+ signedOrderSchema,
+ signedOrdersSchema,
+ ordersSchema,
+ paginatedCollectionSchema,
+ relayerApiErrorResponseSchema,
+ relayerApiFeeRecipientsResponseSchema,
+ relayerApiOrderSchema,
+ relayerApiOrdersSchema,
+ relayerApiOrderConfigPayloadSchema,
+ relayerApiOrderConfigResponseSchema,
+ relayerApiOrderBookResponseSchema,
+ relayerApiAssetDataPairsResponseSchema,
+ relayerApiAssetDataTradeInfoSchema,
+ relayerApiOrdersChannelSubscribeSchema,
+ relayerApiOrdersChannelSubscribePayload,
+ relayerApiOrdersChannelUpdateSchema,
+ relayerApiOrdersResponseSchema,
+ relayerApiAssetDataPairsSchema,
+};
+
+// We need to replace the `$ref`s to be OpenAPI compliant.
+const openApiSchemas = JSON.parse(
+ JSON.stringify(usedSchemas).replace(/(\/\w+)/g, match => `#/components/schemas${match}`),
+);
+// The json schema used by OpenAPI does not accept ids
+Object.keys(openApiSchemas).forEach(key => delete openApiSchemas[key].id);
+
+export const schemas = openApiSchemas;
diff --git a/packages/sra-api/src/parameters.ts b/packages/sra-api/src/parameters.ts
index bfa261df0..7b54fe9a0 100644
--- a/packages/sra-api/src/parameters.ts
+++ b/packages/sra-api/src/parameters.ts
@@ -25,7 +25,6 @@ export const networkdIdParameter: ParameterObject = {
in: 'query',
description: 'The id of the Ethereum network',
example: 42,
- default: 1,
schema: {
type: 'number',
},
diff --git a/packages/sra-api/test/api_test.ts b/packages/sra-api/test/api_test.ts
deleted file mode 100644
index 47353ca80..000000000
--- a/packages/sra-api/test/api_test.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import * as chai from 'chai';
-import * as dirtyChai from 'dirty-chai';
-import { validate } from 'openapi-schema-validation';
-
-import { api } from '../src/index';
-
-chai.config.includeStack = true;
-chai.use(dirtyChai);
-
-describe('SRA OpenAPI Schema', () => {
- it('should be a valid OpenAPI schema', () => {
- const result = validate(api, 3);
- chai.expect(result.errors).to.have.length(0);
- });
-});
diff --git a/packages/sra-api/tsconfig.json b/packages/sra-api/tsconfig.json
index c56d255d5..e60028885 100644
--- a/packages/sra-api/tsconfig.json
+++ b/packages/sra-api/tsconfig.json
@@ -3,5 +3,5 @@
"compilerOptions": {
"outDir": "lib"
},
- "include": ["./src/**/*"]
+ "include": ["./src/**/*", "./test/*"]
}