Add orders endpoint

This commit is contained in:
fragosti
2018-08-07 15:38:50 -07:00
parent f4c2fabbf8
commit f36a43a83f
4 changed files with 175 additions and 1 deletions

View File

@@ -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,

View File

@@ -1,7 +1,9 @@
import { validationError } from './errors';
import { relayerApiAssetDataPairsResponse } from './relayerApiAssetDataPairsResponse';
import { relayerApiOrdersResponse } from './relayerApiOrdersResponse';
export const examples = {
validationError,
relayerApiAssetDataPairsResponse,
relayerApiOrdersResponse,
};

View File

@@ -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',
},
},
],
};

View File

@@ -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: {},
},
],
};