openapi: 3.0.3 info: title: Rackspace Offer API version: '2.0' description: >- The Rackspace Offer API (v2) exposes the Rackspace offerings catalog, including offerings, products, currency, and pricing grids (commit grids, volume grids). It supports listing offerings by line-of-business and status, retrieving products, and computing discounts via commit and volume grids. contact: name: Rackspace Technology url: https://www.rackspace.com/ license: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0 x-generated-from: documentation x-source-url: https://github.com/rackerlabs/docs-offerings x-last-validated: '2026-05-05' servers: - url: https://offerings.api.rackspacecloud.com description: Rackspace Offerings API endpoint. security: - AuthToken: [] tags: - name: Offerings description: Offering catalog operations. - name: Products description: Product catalog operations. - name: Currency description: Currency lookup. - name: Pricing description: Commit and volume pricing grid operations. paths: /v2/offerings: get: operationId: getOfferings summary: Get Offerings description: Lists Rackspace offerings available in the product catalog. tags: [Offerings] parameters: - $ref: '#/components/parameters/LineOfBusiness' - $ref: '#/components/parameters/Status' - $ref: '#/components/parameters/Limit' - $ref: '#/components/parameters/Marker' responses: '200': description: Offerings returned. content: application/json: schema: { $ref: '#/components/schemas/OfferingList' } x-microcks-operation: { delay: 0, dispatcher: FALLBACK } /v2/products: get: operationId: getProducts summary: Get Products description: Lists Rackspace products under an offering. tags: [Products] parameters: - in: query name: offeringCode schema: { type: string } - in: query name: offeringVersion schema: { type: integer } - $ref: '#/components/parameters/Status' - $ref: '#/components/parameters/Limit' - $ref: '#/components/parameters/Marker' responses: '200': description: Products returned. content: application/json: schema: { $ref: '#/components/schemas/ProductList' } x-microcks-operation: { delay: 0, dispatcher: FALLBACK } /v2/products/{productCode}: parameters: - in: path name: productCode required: true schema: { type: string } get: operationId: getProduct summary: Get Product description: Returns a single product by its product code. tags: [Products] responses: '200': description: Product returned. content: application/json: schema: { $ref: '#/components/schemas/Product' } x-microcks-operation: { delay: 0, dispatcher: FALLBACK } /v2/currencies/{currencyCode}: parameters: - in: path name: currencyCode required: true description: ISO-4217 currency code. schema: { type: string, minLength: 3, maxLength: 3 } get: operationId: getCurrency summary: Get Currency description: Returns currency metadata. tags: [Currency] responses: '200': description: Currency returned. content: application/json: schema: { $ref: '#/components/schemas/Currency' } x-microcks-operation: { delay: 0, dispatcher: FALLBACK } /v2/commitGrids: get: operationId: getCommitGrids summary: Get Commit Grids description: Lists commit-pricing grids. tags: [Pricing] parameters: - $ref: '#/components/parameters/Limit' - $ref: '#/components/parameters/Marker' responses: '200': description: Commit grids returned. content: application/json: schema: { $ref: '#/components/schemas/CommitGridList' } x-microcks-operation: { delay: 0, dispatcher: FALLBACK } /v2/commitGrids/{gridId}: parameters: - in: path name: gridId required: true schema: { type: string } get: operationId: getCommitGrid summary: Get Commit Grid tags: [Pricing] responses: '200': description: Commit grid returned. content: application/json: schema: { $ref: '#/components/schemas/CommitGrid' } x-microcks-operation: { delay: 0, dispatcher: FALLBACK } /v2/volumeGrids: get: operationId: getVolumeGrids summary: Get Volume Grids description: Lists volume-pricing grids. tags: [Pricing] responses: '200': description: Volume grids returned. content: application/json: schema: { $ref: '#/components/schemas/VolumeGridList' } x-microcks-operation: { delay: 0, dispatcher: FALLBACK } /v2/volumeGrids/{gridId}: parameters: - in: path name: gridId required: true schema: { type: string } get: operationId: getVolumeGrid summary: Get Volume Grid tags: [Pricing] responses: '200': description: Volume grid returned. content: application/json: schema: { $ref: '#/components/schemas/VolumeGrid' } x-microcks-operation: { delay: 0, dispatcher: FALLBACK } /v2/calculate/discount: post: operationId: calculateDiscount summary: Calculate Discount description: Computes the discounted price for a quantity given the applicable commit/volume grids. tags: [Pricing] requestBody: required: true content: application/json: schema: { $ref: '#/components/schemas/DiscountCalculationRequest' } responses: '200': description: Discount calculation result returned. content: application/json: schema: { $ref: '#/components/schemas/DiscountCalculationResponse' } x-microcks-operation: { delay: 0, dispatcher: FALLBACK } components: securitySchemes: AuthToken: type: apiKey in: header name: X-Auth-Token parameters: LineOfBusiness: in: query name: lineOfBusiness required: false description: The Rackspace line of business associated with the offering (for example, US_CLOUD). schema: { type: string } Status: in: query name: status required: false schema: { type: string, enum: [ACTIVE, INACTIVE], default: ACTIVE } Limit: in: query name: limit required: false schema: { type: integer, default: 100, maximum: 100 } Marker: in: query name: marker required: false description: Pagination marker (the starting point for the next batch of items). schema: { type: string } schemas: Offering: title: Offering type: object properties: offeringCode: { type: string } offeringVersion: { type: integer } name: { type: string } description: { type: string } status: { type: string, enum: [ACTIVE, INACTIVE] } lineOfBusiness: { type: string } startDate: { type: string, format: date } endDate: { type: string, format: date } OfferingList: title: OfferingList type: object properties: offerings: type: array items: { $ref: '#/components/schemas/Offering' } links: type: array items: { $ref: '#/components/schemas/Link' } Product: title: Product type: object properties: productCode: { type: string } productVersion: { type: integer } name: { type: string } description: { type: string } offeringCode: { type: string } offeringVersion: { type: integer } status: { type: string, enum: [ACTIVE, INACTIVE] } unitOfMeasure: { type: string } currency: { type: string } listPrice: { type: number, format: float } ProductList: title: ProductList type: object properties: products: type: array items: { $ref: '#/components/schemas/Product' } links: type: array items: { $ref: '#/components/schemas/Link' } Currency: title: Currency type: object properties: code: { type: string } name: { type: string } symbol: { type: string } CommitGrid: title: CommitGrid type: object properties: id: { type: string } name: { type: string } currency: { type: string } tiers: type: array items: type: object properties: minCommit: { type: number } maxCommit: { type: number } discountPercent: { type: number } CommitGridList: title: CommitGridList type: object properties: commitGrids: type: array items: { $ref: '#/components/schemas/CommitGrid' } VolumeGrid: title: VolumeGrid type: object properties: id: { type: string } name: { type: string } currency: { type: string } tiers: type: array items: type: object properties: minVolume: { type: number } maxVolume: { type: number } discountPercent: { type: number } VolumeGridList: title: VolumeGridList type: object properties: volumeGrids: type: array items: { $ref: '#/components/schemas/VolumeGrid' } DiscountCalculationRequest: title: DiscountCalculationRequest type: object required: [productCode, quantity] properties: productCode: { type: string } quantity: { type: number } currency: { type: string } commitGridId: { type: string } volumeGridId: { type: string } DiscountCalculationResponse: title: DiscountCalculationResponse type: object properties: productCode: { type: string } quantity: { type: number } listPrice: { type: number } discountPercent: { type: number } finalPrice: { type: number } currency: { type: string } Link: title: Link type: object properties: rel: { type: string } href: { type: string, format: uri }