Skip to content

Pricing Market Data Routes

The pricing market-data route group is exposed under:

/api/v1/pricing/market_data/

The FastAPI layer is a resolver only. Row contracts and CRUD operations come from msm_pricing.api.

Discoverability

GET /api/v1/pricing/market_data/

Response:

{
  "resource": "pricing_market_data",
  "description": "Manage pricing market-data sets and concept bindings.",
  "resources": [
    {
      "key": "sets",
      "model": "PricingMarketDataSet",
      "list_url": "/api/v1/pricing/market_data/sets/",
      "create_url": "/api/v1/pricing/market_data/sets/",
      "upsert_url": "/api/v1/pricing/market_data/sets/upsert/"
    },
    {
      "key": "bindings",
      "model": "PricingMarketDataSetBinding",
      "list_url": "/api/v1/pricing/market_data/bindings/",
      "create_url": "/api/v1/pricing/market_data/bindings/",
      "upsert_url": "/api/v1/pricing/market_data/bindings/upsert/"
    }
  ]
}

Data Sets

GET /api/v1/pricing/market_data/sets/?limit=25&offset=0&status=ACTIVE&set_key=default

Response uses command-center.resource_collection@v1; discovery is available at /api/v1/pricing/market_data/sets/discovery/:

{
  "items": [
    {
      "uid": "7f958bbf-44cc-4cb9-ad19-b41b5aa28d60",
      "set_key": "default",
      "display_name": "Default pricing market data",
      "description": null,
      "status": "ACTIVE",
      "metadata_json": null
    }
  ],
  "pageInfo": {
    "pageIndex": 0,
    "pageSize": 25,
    "totalItems": 1,
    "hasNextPage": false,
    "hasPreviousPage": false
  }
}
GET /api/v1/pricing/market_data/sets/{uid}/
GET /api/v1/pricing/market_data/sets/by-key/{set_key}/

Response:

{
  "uid": "7f958bbf-44cc-4cb9-ad19-b41b5aa28d60",
  "set_key": "default",
  "display_name": "Default pricing market data",
  "description": null,
  "status": "ACTIVE",
  "metadata_json": null
}
POST /api/v1/pricing/market_data/sets/
POST /api/v1/pricing/market_data/sets/upsert/
PATCH /api/v1/pricing/market_data/sets/{uid}/

Request bodies use the corresponding msm_pricing.api contracts:

  • PricingMarketDataSetCreate
  • PricingMarketDataSetUpsert
  • PricingMarketDataSetUpdate

Responses return PricingMarketDataSet.

DELETE /api/v1/pricing/market_data/sets/{uid}/

Response:

{
  "detail": "Deleted pricing market-data set.",
  "uid": "7f958bbf-44cc-4cb9-ad19-b41b5aa28d60",
  "deleted_count": 1
}

Deleting a set relies on backend cascade behavior for related binding rows.

Bindings

GET /api/v1/pricing/market_data/bindings/?limit=25&offset=0&market_data_set_uid=...&concept_key=discount_curves
GET /api/v1/pricing/market_data/sets/{market_data_set_uid}/bindings/?limit=25&offset=0

Response:

{
  "items": [
    {
      "uid": "6b8fd8e4-6748-423c-b9fb-fad522d6f150",
      "market_data_set_uid": "7f958bbf-44cc-4cb9-ad19-b41b5aa28d60",
      "concept_key": "discount_curves",
      "data_node_uid": "5f4d0bb8-36f0-44fc-a9fc-f42dd3ce7f2d",
      "storage_table_identifier": "DiscountCurvesStorage",
      "source": "example",
      "metadata_json": null
    }
  ],
  "pageInfo": {
    "pageIndex": 0,
    "pageSize": 25,
    "totalItems": 1,
    "hasNextPage": false,
    "hasPreviousPage": false
  }
}

The global and set-scoped binding lists declare command-center.resource_collection@v1 and expose sibling /discovery/ operations.

GET /api/v1/pricing/market_data/bindings/{uid}/

Response:

{
  "uid": "6b8fd8e4-6748-423c-b9fb-fad522d6f150",
  "market_data_set_uid": "7f958bbf-44cc-4cb9-ad19-b41b5aa28d60",
  "concept_key": "discount_curves",
  "data_node_uid": "5f4d0bb8-36f0-44fc-a9fc-f42dd3ce7f2d",
  "storage_table_identifier": "DiscountCurvesStorage",
  "source": "example",
  "metadata_json": null
}
GET /api/v1/pricing/market_data/bindings/resolve/?market_data_set=default&concept_key=discount_curves

Response:

{
  "market_data_set": "default",
  "concept_key": "discount_curves",
  "data_node_uid": "5f4d0bb8-36f0-44fc-a9fc-f42dd3ce7f2d"
}
POST /api/v1/pricing/market_data/bindings/
POST /api/v1/pricing/market_data/bindings/upsert/
PATCH /api/v1/pricing/market_data/bindings/{uid}/

Request bodies use the corresponding msm_pricing.api contracts:

  • PricingMarketDataSetBindingCreate
  • PricingMarketDataSetBindingUpsert
  • PricingMarketDataSetBindingUpdate

Responses return PricingMarketDataSetBinding.

DELETE /api/v1/pricing/market_data/bindings/{uid}/

Response:

{
  "detail": "Deleted pricing market-data binding.",
  "uid": "6b8fd8e4-6748-423c-b9fb-fad522d6f150",
  "deleted_count": 1
}

Collection contract

All list endpoints in this route group use command-center.resource_collection@v1:

{
  "items": [],
  "pageInfo": {
    "pageIndex": 0,
    "pageSize": 25,
    "totalItems": 123,
    "hasNextPage": true,
    "hasPreviousPage": false
  }
}

totalItems is the exact number of rows matching the filters. limit and offset are request query parameters and are represented canonically by pageSize and pageIndex.