Add orders endpoint
This commit is contained in:
		@@ -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,
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,9 @@
 | 
			
		||||
import { validationError } from './errors';
 | 
			
		||||
import { relayerApiAssetDataPairsResponse } from './relayerApiAssetDataPairsResponse';
 | 
			
		||||
import { relayerApiOrdersResponse } from './relayerApiOrdersResponse';
 | 
			
		||||
 | 
			
		||||
export const examples = {
 | 
			
		||||
    validationError,
 | 
			
		||||
    relayerApiAssetDataPairsResponse,
 | 
			
		||||
    relayerApiOrdersResponse,
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -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',
 | 
			
		||||
            },
 | 
			
		||||
        },
 | 
			
		||||
    ],
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										26
									
								
								packages/sra-api/src/examples/relayerApiOrdersResponse.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								packages/sra-api/src/examples/relayerApiOrdersResponse.ts
									
									
									
									
									
										Normal 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: {},
 | 
			
		||||
        },
 | 
			
		||||
    ],
 | 
			
		||||
};
 | 
			
		||||
		Reference in New Issue
	
	Block a user