aboutsummaryrefslogtreecommitdiffstats
path: root/packages/sra-api/src
diff options
context:
space:
mode:
authorfragosti <francesco.agosti93@gmail.com>2018-08-08 06:38:50 +0800
committerfragosti <francesco.agosti93@gmail.com>2018-08-08 06:39:33 +0800
commitf36a43a83f6c8ae32d36768da8c97858ef051446 (patch)
tree0037a7273a4c1e8b4e8b50d068e930b32d622381 /packages/sra-api/src
parentf4c2fabbf8f8eccd5cd7c65035e78ad268a34b57 (diff)
downloaddexon-0x-contracts-f36a43a83f6c8ae32d36768da8c97858ef051446.tar.gz
dexon-0x-contracts-f36a43a83f6c8ae32d36768da8c97858ef051446.tar.zst
dexon-0x-contracts-f36a43a83f6c8ae32d36768da8c97858ef051446.zip
Add orders endpoint
Diffstat (limited to 'packages/sra-api/src')
-rw-r--r--packages/sra-api/src/api.ts127
-rw-r--r--packages/sra-api/src/examples/index.ts2
-rw-r--r--packages/sra-api/src/examples/relayerApiAssetDataPairsResponse.ts21
-rw-r--r--packages/sra-api/src/examples/relayerApiOrdersResponse.ts26
4 files changed, 175 insertions, 1 deletions
diff --git a/packages/sra-api/src/api.ts b/packages/sra-api/src/api.ts
index c93d57946..d80fb9b41 100644
--- a/packages/sra-api/src/api.ts
+++ b/packages/sra-api/src/api.ts
@@ -5,7 +5,7 @@ import { examples } from './examples';
import { md } from './md';
import { generateParameters } from './parameters';
import { generateResponses } from './responses';
-// We need to replace the `$ref`s to be openAPI compliant.
+// 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 = {
@@ -55,6 +55,131 @@ export const api: OpenApiSpec = {
),
},
},
+ '/v2/orders': {
+ get: {
+ description:
+ 'Retrieves a list of orders given query parameters. This endpoint should be [paginated](#section/Pagination). For querying an entire orderbook snapshot, the [orderbook endpoint](#operation/getOrderbook) is recommended. If both makerAssetData and takerAssetData are specified, returned orders will be sorted by price determined by (takerTokenAmount/makerTokenAmount) in ascending order. By default, orders returned by this endpoint are unsorted.',
+ operationId: 'getOrders',
+ parameters: generateParameters(
+ [
+ {
+ name: 'makerAssetProxyId',
+ in: 'query',
+ description: `The maker [asset proxy id](https://0xproject.com/docs/0x.js#types-AssetProxyId) (example: "0xf47261b0" for ERC20, "0x02571792" for ERC721).`,
+ example: '0xf47261b0',
+ schema: {
+ $ref: '#/components/schemas/hexSchema',
+ },
+ },
+ {
+ name: 'takerAssetProxyId',
+ in: 'query',
+ description: `The taker asset [asset proxy id](https://0xproject.com/docs/0x.js#types-AssetProxyId) (example: "0xf47261b0" for ERC20, "0x02571792" for ERC721).`,
+ example: '0x02571792',
+ schema: {
+ $ref: '#/components/schemas/hexSchema',
+ },
+ },
+ {
+ name: 'makerAssetAddress',
+ in: 'query',
+ description: `The contract address for the maker asset.`,
+ example: '0xe41d2489571d322189246dafa5ebde1f4699f498',
+ schema: {
+ $ref: '#/components/schemas/addressSchema',
+ },
+ },
+ {
+ name: 'takerAssetAddress',
+ in: 'query',
+ description: `The contract address for the taker asset.`,
+ example: '0xe41d2489571d322189246dafa5ebde1f4699f498',
+ schema: {
+ $ref: '#/components/schemas/addressSchema',
+ },
+ },
+ {
+ name: 'exchangeAddress',
+ in: 'query',
+ description: `Same as exchangeAddress in the [0x Protocol v2 Specification](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#order-message-format)`,
+ example: '0xe41d2489571d322189246dafa5ebde1f4699f498',
+ schema: {
+ $ref: '#/components/schemas/addressSchema',
+ },
+ },
+ {
+ name: 'senderAddress',
+ in: 'query',
+ description: `Same as senderAddress in the [0x Protocol v2 Specification](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#order-message-format)`,
+ example: '0xe41d2489571d322189246dafa5ebde1f4699f498',
+ schema: {
+ $ref: '#/components/schemas/addressSchema',
+ },
+ },
+ {
+ name: 'makerAssetData',
+ in: 'query',
+ description: `Same as makerAssetData in the [0x Protocol v2 Specification](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#order-message-format)`,
+ example: '0xe41d2489571d322189246dafa5ebde1f4699f498',
+ schema: {
+ $ref: '#/components/schemas/hexSchema',
+ },
+ },
+ {
+ name: 'takerAssetData',
+ in: 'query',
+ description: `Same as takerAssetData in the [0x Protocol v2 Specification](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#order-message-format)`,
+ example: '0xe41d2489571d322189246dafa5ebde1f4699f498',
+ schema: {
+ $ref: '#/components/schemas/hexSchema',
+ },
+ },
+ {
+ name: 'traderAssetData',
+ in: 'query',
+ description: `Same as traderAssetData in the [0x Protocol v2 Specification](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#order-message-format)`,
+ example: '0xe41d2489571d322189246dafa5ebde1f4699f498',
+ schema: {
+ $ref: '#/components/schemas/hexSchema',
+ },
+ },
+ {
+ name: 'makerAddress',
+ in: 'query',
+ description: `Same as makerAddress in the [0x Protocol v2 Specification](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#order-message-format)`,
+ example: '0xe41d2489571d322189246dafa5ebde1f4699f498',
+ schema: {
+ $ref: '#/components/schemas/addressSchema',
+ },
+ },
+ {
+ name: 'traderAddress',
+ in: 'query',
+ description: `Same as traderAddress in the [0x Protocol v2 Specification](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#order-message-format)`,
+ example: '0xe41d2489571d322189246dafa5ebde1f4699f498',
+ schema: {
+ $ref: '#/components/schemas/addressSchema',
+ },
+ },
+ {
+ name: 'feeRecipientAddress',
+ in: 'query',
+ description: `Same as feeRecipientAddress in the [0x Protocol v2 Specification](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#order-message-format)`,
+ example: '0xe41d2489571d322189246dafa5ebde1f4699f498',
+ schema: {
+ $ref: '#/components/schemas/addressSchema',
+ },
+ },
+ ],
+ true,
+ ),
+ responses: generateResponses(
+ 'relayerApiOrdersResponseSchema',
+ examples.relayerApiOrdersResponse,
+ `Returns a collection of 0x orders with meta-data as specified by query params`,
+ ),
+ },
+ },
},
components: {
schemas: openApiSchemas,
diff --git a/packages/sra-api/src/examples/index.ts b/packages/sra-api/src/examples/index.ts
index a9d08691e..0ae8a22a7 100644
--- a/packages/sra-api/src/examples/index.ts
+++ b/packages/sra-api/src/examples/index.ts
@@ -1,7 +1,9 @@
import { validationError } from './errors';
import { relayerApiAssetDataPairsResponse } from './relayerApiAssetDataPairsResponse';
+import { relayerApiOrdersResponse } from './relayerApiOrdersResponse';
export const examples = {
validationError,
relayerApiAssetDataPairsResponse,
+ relayerApiOrdersResponse,
};
diff --git a/packages/sra-api/src/examples/relayerApiAssetDataPairsResponse.ts b/packages/sra-api/src/examples/relayerApiAssetDataPairsResponse.ts
new file mode 100644
index 000000000..9eead5239
--- /dev/null
+++ b/packages/sra-api/src/examples/relayerApiAssetDataPairsResponse.ts
@@ -0,0 +1,21 @@
+export const relayerApiAssetDataPairsResponse = {
+ total: 43,
+ page: 1,
+ perPage: 100,
+ records: [
+ {
+ assetDataA: {
+ minAmount: '0',
+ maxAmount: '10000000000000000000',
+ precision: 5,
+ assetData: '0xf47261b04c32345ced77393b3530b1eed0f346429d',
+ },
+ assetDataB: {
+ minAmount: '0',
+ maxAmount: '50000000000000000000',
+ precision: 5,
+ assetData: '0x0257179264389b814a946f3e92105513705ca6b990',
+ },
+ },
+ ],
+};
diff --git a/packages/sra-api/src/examples/relayerApiOrdersResponse.ts b/packages/sra-api/src/examples/relayerApiOrdersResponse.ts
new file mode 100644
index 000000000..ac16e7e34
--- /dev/null
+++ b/packages/sra-api/src/examples/relayerApiOrdersResponse.ts
@@ -0,0 +1,26 @@
+export const relayerApiOrdersResponse = {
+ total: 984,
+ page: 1,
+ perPage: 100,
+ records: [
+ {
+ order: {
+ makerAddress: '0x9e56625509c2f60af937f23b7b532600390e8c8b',
+ takerAddress: '0xa2b31dacf30a9c50ca473337c01d8a201ae33e32',
+ feeRecipientAddress: '0xb046140686d052fff581f63f8136cce132e857da',
+ senderAddress: '0xa2b31dacf30a9c50ca473337c01d8a201ae33e32',
+ makerAssetAmount: '10000000000000000',
+ takerAssetAmount: '20000000000000000',
+ makerFee: '100000000000000',
+ takerFee: '200000000000000',
+ expirationTimeSeconds: '1532560590',
+ salt: '1532559225',
+ makerAssetData: '0xf47261b04c32345ced77393b3530b1eed0f346429d',
+ takerAssetData: '0x0257179264389b814a946f3e92105513705ca6b990',
+ exchangeAddress: '0x12459c951127e0c374ff9105dda097662a027093',
+ signature: '0x012761a3ed31b43c8780e905a260a35faefcc527be7516aa11c0256729b5b351bc33',
+ },
+ metaData: {},
+ },
+ ],
+};