openapi: 3.1.1
info:
title: APIs for Dassault Systèmes Partners accreditations orders API
description: APIs exposed by Dassault Systèmes to its partners and resellers.
version: 0.10.0
license:
name: Dassault Systèmes 2025
url: https://www.3ds.com/
x-logo:
url: https://www.3ds.com/assets/3ds-navigation/3DS_corporate-logo_blue.svg
altText: Dassault Systèmes
backgroundColor: '#FFFFFF'
servers:
- url: https://apigw-prd.3ds.com
description: Main (production) server
- url: https://apigw-ppt.3ds.com
description: Server for development by Partners (Non Production)
- url: https://apigw-qal.3ds.com
description: Server for Quality Assurance Testing (Non Production)
- url: https://apigw-ptd.3ds.com
description: Server for preprod validation (Non Production)
- url: https://apigw-ppd.3ds.com
description: Server for postprod validation (Non Production)
security:
- ApiKeyAuth: []
tags:
- name: orders
description: 'This section defines the operations related to orders, including the creation, management, and fulfillment of orders.
It provides a comprehensive overview of the order lifecycle, from initial request to final delivery.
The operations in this section are designed to support the efficient and effective management of orders, ensuring that customers receive their products or services in a timely and satisfactory manner.
The following operations are included in this section:
* Searching Orders
* Getting Order Details
'
paths:
/order/api4partners/v0/orders/search:
post:
summary: Search Orders using various filters
description: 'Searches for orders based on various filter criteria such as creation date, booking date, last modified date, and more.
Supports pagination through `skip` and `top` query parameters.
'
tags:
- orders
operationId: searchOrders
parameters:
- name: skip
in: query
description: "The number of records to skip in the result set. \nUse this for paginating through results. Defaults to 0 if not specified.\nFor example, `skip=20` will skip the first 20 records.\n"
schema:
type: integer
minimum: 0
default: 0
- name: top
in: query
description: "The maximum number of records to return in the response. \nUse this to limit the size of the result set. Defaults to 10 if not specified.\nFor example, `top=10` will return up to 10 records starting from the position defined by `skip`.\n"
schema:
type: integer
minimum: 1
maximum: 100
default: 10
requestBody:
description: "A JSON object specifying filter criteria for retrieving matching orders.\n\nThe request must include at least one of the following sub-objects: \n- `creationDateTime`\n- `bookingDateTime`\n- `lastUpdateDateTime`\n- `installedBaseNumber`\n- `onlineInstanceSeatId`\n- `billToPoReferences`\n\nThese will be combined using an AND operator if more than one is provided.\n"
content:
application/json:
schema:
$ref: '#/components/schemas/orders_search_req'
examples:
basicSearchSingleCriteria:
summary: Sample request body for searching orders using a single criterion
description: 'This example demonstrates how to search for orders using the `creationDateTime` criterion.
If the `to` value is not provided under `creationDateTime`, it is implicitly set to either 7 days after the `from` timestamp or the current time—whichever is earlier.
This JSON payload retrieves all orders created between `01-April-2025 1:30 AM UTC` and `08-April-2025 1:30 AM UTC`.
'
value:
creationDateTime:
from: '2025-04-01T01:30:00Z'
advancedSearchMultipleCriteria:
summary: Sample request body for searching orders using multiple criteria
description: 'This example demonstrates how to search for orders using multiple criteria:
- `creationDateTime`
- `lastUpdateDateTime`
- `installedBaseNumber`
- `transactionType`
If the `to` value is not provided under `creationDateTime`, it is implicitly set to either 7 days after the `from` timestamp or the current time—whichever is earlier.
If the `from` value is not provided under `lastUpdateDateTime`, it is implicitly set to 3 days before the `to` timestamp.
This JSON payload searches for all `Renewal Orders` that:
- Were created between `01-April-2025 1:30 AM UTC` and `08-April-2025 1:30 AM UTC`
- Were modified between `22-May-2025 7:45 PM UTC` and `25-May-2025 7:45 PM UTC`
- Have the InstalledBase Number `LN00001234567`
'
value:
creationDateTime:
from: '2025-04-01T01:30:00Z'
lastUpdateDateTime:
to: '2025-05-25T19:45:00Z'
installedBaseNumber: LN00001234567
transactionType: RN
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/200_post_orders_search'
examples:
successful_ordersSearch_OneResult:
summary: Sample successful basic Search for orders
description: Sample successful basic search for orders with only 1 result.
value:
data:
- transaction:
id: PO_A123456789
type: PO
status: Sent to DSx.Finance
description: XYZ Company Order 50 products
creationDateTime: '2024-05-21T14:30:00Z'
dsRecievedPoDate: '2024-05-21'
bookingDateTime: '2024-05-29T18:00:00Z'
currency: USD
onlineConsentStatus: Not Applicable
billToSalesRepresentative: DOE, Jane
billToPoReference: EXAMPLE-CORP-20250518
billToSite:
id: '100012345678901'
name: Example Corporation
localName: 示例公司
locationId: 1
soldToSite:
id: '200012345678901'
name: Foobar Inc
localName: फ़ूबार इंक
locationId: 2
businessUnit:
id: BU001
name: Corporate Sales Unit A
localTimezone: CET
info:
success: true
statusCode: 200
estimatedSearchCount: 1
200_ordersSearch_No-Result:
summary: Sample successful Search for orders without any results
description: Sample successful Search for orders without any results
value:
data: []
info:
success: true
statusCode: 200
estimatedSearchCount: 0
'400':
description: Bad request, invalid input.
content:
application/json:
schema:
$ref: '#/components/schemas/400_post_orders_search'
examples:
failedOrderSearch_BadRequest:
summary: Example response for a bad request
description: 'This example shows the response returned when a bad request is made, such as when no search criteria are provided.
'
value:
data: []
info:
success: false
statusCode: 400
estimatedSearchCount: 0
error:
- type: errors:3dx:invalidRequest
title: Missing required search criteria
errors:
- detail: 'Please specify at least one search criterion. Valid options include: `creationDateTime`, `bookingDateTime`, `lastUpdateDateTime`, `installedBaseNumber`, `onlineInstanceSeatId`, `billToPoReferences`.'
pointer: '#'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/401_basic_unauthorized'
examples:
401_missing-apikey:
summary: Service response in case of missing APIKEY.
description: Basic Service response in case of missing APIKEY in request
value:
message: Missing API key in request
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/403_basic_forbidden'
examples:
403_forbidden:
summary: Access Forbidden
description: Access Forbidden. Typical reason could be usage of invalid API-KEY or a valid one but for a scope on which access has not been granted by 3DS.
value:
message: API Consumer Not allowed
'429':
description: Too many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/429_too_many_requests'
examples:
429_too_many_requests:
summary: Too many Requests
description: The service cannot handle the request as too many have been received.
value:
message: Too many requests, please try again later
/order/api4partners/v0/orders/{id}:
get:
summary: Get Order details
description: Retrieves all the details of an order given its Dassault Systèmes reference.
tags:
- orders
operationId: getOrderDetails
parameters:
- name: id
in: path
required: true
description: id of the order to get details from
schema:
type: string
example: PO_000123456789
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/200_get_orders'
examples:
successful_getOrderDetails:
summary: Sample successful response for order details query
description: Example of response for order details with line and subLine
value:
data:
- transaction:
id: PO_A123456789
type: PO
status: Sent to DSx.Finance
description: XYZ Company Order 50 products
businessUnit:
id: BU001
name: Corporate Sales Unit A
localTimezone: CET
billToSite:
id: '100012345678901'
name: Example Corporation
localName: 示例公司
locationId: 1
billToContact: DOE, Jini
soldToSite:
id: '200012345678901'
name: Foobar Inc
localName: फ़ूबार इंक
locationId: 2
creationDateTime: '2024-05-21T14:30:00Z'
dsReceivedPoDate: '2024-05-21'
bookingDateTime: '2024-05-29T18:00:00Z'
currency: USD
onlineConsentStatus: Not Applicable
billToSalesRepresentative: DOE, Jane
billToPoReference: EXAMPLE-CORP-20250518
agreement:
type: General VAR Agreement
reference: Enterprise License Agreement Q2 2024
sboNumber: ABC0012345
customerRequestedArrivalDate: '2025-05-31'
dsSalesRepresentative: DOE, John
isMultiYear: false
hasExitClause: false
recurringChargeBillingCycle: Calendar Year
opportunity: A1B2-C3D4E5
paymentTerms: Net Date of Invoice + 60 days
licenseChargeConditions:
- sequenceNumber: 1
lineGroup: SBL0001234567
onlineInstanceSeatId: R1122334455667
orderType: Stop - Transform
usageScope: GEO EMEA
promotion:
id: PAO0000111
name: 3DEXPERIENCE for small and medium business
combination: Collaborative Design & Engineering Learning @Home
waiver:
endDate: '2025-09-15'
licenseChargeBreakdown:
- sequenceNumber: 1
installedBaseNumber: LN00012345678
subOrderType: New License
revenueType: ALC
portfolio: CATIA
release: 3DEXPERIENCE R2025x
product:
trigram: ABC
type: Named User
number: 1AB-ABC
name: Generic Product Standard with Cloud Services
dsOffering: Licensed Program
quantity: 2
unitListPrice: 1000
totalListPrice: 2000
billToNetAmount: 1930
billToAnnualAmount: 1930
billToDiscountPercentage: 30.5
billToMarginPercentage: 10.5
maximumCustomerNetAmount: 1958.95
maximumCustomerAnnualAmount: 1958.95
minimumCustomerDiscountPercentage: 10.5
startDate: '2025-06-01'
endDate: '2026-05-31'
duration: 2
calculatedStartDate: '2025-06-01'
calculatedEndDate: '2026-05-31'
yearNumber: 1
coupon:
name: 10% off on Installation Fee
discountPercentage: 10
inflation:
date: '2025-07-01'
ratio: 1.04
exception: Capping To Price List
info:
success: true
statusCode: 200
estimatedSearchCount: 1
'400':
description: Bad Request.
content:
application/json:
schema:
$ref: '#/components/schemas/4xx_get_orders'
examples:
failedOrderGet_BadRequest:
summary: Example response for missing required parameter
description: 'This example shows the response returned when transaction id is missing in the request.
'
value:
data: []
info:
success: false
statusCode: 400
estimatedSearchCount: 0
error:
- type: errors:3dx:invalidRequest
title: Bad Request
errors:
- detail: A required parameter is missing.
pointer: '#/transactionId'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/401_basic_unauthorized'
examples:
401_missing-apikey:
summary: Service response in case of missing APIKEY.
description: Basic Service response in case of missing APIKEY in request
value:
message: Missing API key in request
'403':
description: Unauthorized, missing or invalid API Key.
content:
application/json:
schema:
$ref: '#/components/schemas/403_basic_forbidden'
examples:
403_forbidden:
summary: Access Forbidden
description: Access Forbidden. Typical reason could be usage of invalid API-KEY or a valid one but for a scope on which access has not been granted by 3DS.
value:
message: API Consumer Not allowed
'404':
description: Not Found.
content:
application/json:
schema:
$ref: '#/components/schemas/4xx_get_orders'
examples:
failedOrderGet_BadRequest:
summary: Example response for a Resource not Found
description: 'This example shows the response returned when no Order exists with the provided Id.
'
value:
data: []
info:
success: false
statusCode: 400
estimatedSearchCount: 0
error:
- type: errors:3dx:resourceNotFound
title: Not found
errors:
- detail: Change your parameters to get results
pointer: '#'
'429':
description: Too many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/429_too_many_requests'
examples:
429_too_many_requests:
summary: Too many Requests
description: The service cannot handle the request as too many have been received.
value:
message: Too many requests, please try again later
components:
schemas:
installed_base_number:
type: string
description: 'A unique identifier for the installed base, representing the total number of software licenses that have been issued to a Final Customer.
The Installed Base Number is used to determine the Final Customer''s maintenance and support obligations, as well as to calculate the cost of future upgrades or renewals.
This is used to track the Final Customer''s software licenses and maintenance history.
'
maxLength: 40
example: LN00012345678
error:
type: array
description: 'An array containing one or more error objects identified during the request processing.
Each object provides detailed information about a specific type of error encountered.
'
items:
type: object
properties:
type:
type: string
description: "A URI identifying the specific type of error. \nThis allows API consumers to programmatically recognize and handle the error appropriately. \n\nThe URI follows the format: `errors:<domain>:<error_type>` \nExample values include:\n- `errors:3dx:invalidRequest`\n- `errors:3dx:authenticationGenericError`\n- `errors:3dx:resourceNotFound`\n- `errors:3dx:internalServerError`\n"
enum:
- errors:3dx:invalidRequest
- errors:3dx:authenticationGenericError
- errors:3dx:resourceNotFound
- errors:3dx:internalServerError
title:
type: string
description: A user-friendly error message, typically localized (NLS-supported), describing the general nature of the error.
errors:
type: array
description: "A list of individual validation or processing errors related to the request. \nUseful when multiple issues are detected at once.\n"
items:
type: object
description: Details of a single error instance.
properties:
detail:
type: string
description: A human-readable message offering guidance to resolve the specific error.
pointer:
type: string
description: A [JSON Pointer](https://datatracker.ietf.org/doc/html/rfc6901) indicating the location of the field in the request payload where the error occurred.
required:
- type
- title
429_too_many_requests:
type: object
description: Too Many Requests
properties:
message:
type: string
required:
- message
order_type:
type: string
description: 'Specifies the classification of the order based on its nature, purpose, or contractual arrangement.
This helps identify whether the order involves a new purchase, renewal, upgrade, transfer, suspension,
migration, evaluation, or any other business scenario. Each value represents a predefined business process
or transaction type that impacts how the order is handled and processed.
For a complete list of supported values, refer to the `enum` section.
'
enum:
- Change of Channel
- Change of VAR
- DS Brand -> DS & Migration
- DS Brand -> DS OTC Platform
- EPP Training
- Evaluation License
- IBM -> DS
- IBM -> DS & Migration
- IBM -> DS without Support
- IBM NAL Parallel Use -> DS
- IBM NAL without Support -> DS
- Intercompany Transfer
- Migration - Non Standard
- Migration - Standard
- Module Exchange - Non Standard
- Module Exchange - Standard
- New
- One Time Fee
- Parallel Use Extension
- Renewal
- Special Order
- Stop
- Stop & Parallel Use
- Stop - Transform
- Suspension
- Suspension Reinstatement
- TOS Reinstatement
- Termination Of Support
- Transfer Parallel Use
- Transfer without Support
- VAR Use
x-enumDescriptions:
New: A fresh order that does not involve any migration, renewal, or upgrade.
Renewal: Extending an existing license.
Migration - Standard: A standard migration from another platform.
Evaluation License: License issued temporarily for evaluation purposes.
Stop - Transform: Discontinuing an existing license with a shift to a transformed model or product.
Suspension: Temporarily halting the license or support services.
Termination Of Support: Ending the support of a product or service.
VAR Use: Orders associated with Value-Added Resellers (VAR).
Change of Channel: Changing Final Customer coverage from direct to indirect or vice versa.
Change of VAR: Changing the Value-Added Reseller (VAR) for an existing order.
DS Brand -> DS & Migration: Migrating from DS Brand to DS with migration services.
DS Brand -> DS OTC Platform: Transitioning from DS Brand to DS OTC Platform.
EPP Training: Training related to EPP (Enterprise Productivity Portfolio).
IBM -> DS: Transitioning from IBM to DS.
IBM -> DS & Migration: Transitioning from IBM to DS with migration services.
IBM -> DS without Support: Transitioning from IBM to DS without support.
IBM NAL Parallel Use -> DS: Parallel use of IBM NAL with DS.
IBM NAL without Support -> DS: Transitioning from IBM NAL to DS without support.
Intercompany Transfer: Transferring licenses between different companies.
Migration - Non Standard: Non-standard migration processes.
Module Exchange - Non Standard: Non-standard module exchange processes.
Module Exchange - Standard: Standard module exchange processes.
One Time Fee: Fee charged for a one-time service or transaction.
Parallel Use Extension: Extending the parallel use period.
Special Order: New licenses with specific administrative requests.
Stop: Discontinuing an existing license.
Stop & Parallel Use: Discontinuing an existing license with parallel use.
Suspension Reinstatement: Reinstating a suspended license or support services.
TOS Reinstatement: Reinstating terms of service.
Transfer Parallel Use: Transferring licenses with parallel use.
Transfer without Support: Transferring licenses without support.
example: Stop - Transform
order_get_data:
type: array
description: List of orders retrieved during the search operation.
items:
type: object
description: Summary information for a single order.
properties:
transaction:
$ref: '#/components/schemas/transaction'
businessUnit:
$ref: '#/components/schemas/business_unit'
billToSite:
type: object
description: Legal entity to which Dassault Systèmes will issue the invoice (Bill To).
$ref: '#/components/schemas/legal_entity'
soldToSite:
type: object
description: Legal entity of the company that is the Final Customer of Dassault Systèmes products (Sold To).
$ref: '#/components/schemas/legal_entity'
agreement:
type: object
description: 'Contains details about the license agreement associated with the licenses being ordered in the Purchase Order (PO).
'
properties:
type:
type: string
description: 'Type or classification of the agreement.
'
maxLength: 100
example: General VAR Agreement
reference:
type: string
description: 'A short, descriptive title or label assigned to the agreement at the time of its creation.
This helps users identify the specific agreement applied to the order.
It can be selected in the Purchase Order only for agreement types where the sub-group is `Instantiated`.
'
maxLength: 254
example: Enterprise License Agreement Q2 2024
required:
- type
billToContact:
type: string
description: Full name of the contact person at the Bill To site (billing entity) who is responsible for the order. This contact person is the primary point of communication for billing-related inquiries and transactions. Format-`LASTNAME, Firstname` (e.g., `DOE, John`).
creationDateTime:
$ref: '#/components/schemas/creation_datetime'
dsReceivedPoDate:
$ref: '#/components/schemas/ds_received_po_date'
bookingDateTime:
$ref: '#/components/schemas/booking_datetime'
currency:
$ref: '#/components/schemas/currency'
onlineConsentStatus:
$ref: '#/components/schemas/online_consent_status'
billToSalesRepresentative:
$ref: '#/components/schemas/billto_sales_representative'
billToPoReference:
$ref: '#/components/schemas/billto_po_reference'
sboNumber:
type: string
description: 'Unique identifier of the Special Bid Offer (SBO) that served as the basis for creating the order.
Typically used to track and reference special pricing or offer conditions.
'
maxLength: 10
example: ABC0012345
customerRequestedArrivalDate:
type: string
description: 'Customer Requested Arrival Date (CRAD) indicates the date by which the Final Customer requests delivery of the DS Licenses and Support Order.
> **Note:** CRAD is a non-binding request. While DS will make reasonable efforts to meet this date, it does not constitute a contractual commitment.
- Orders can still receive ''Finance Approved'' status, media can be ''Shipped'', and license keys can be issued and marked as ''Completed'' irrespective of the CRAD.
- The **Support Start Date** in the Installed Base will never begin before the CRAD.
- Format: ISO 8601 format (YYYY-MM-DD)
- License keys will remain inactive until the Support Start Date.
'
format: date
example: '2025-05-31'
dsSalesRepresentative:
type: string
description: 'Full name of the Dassault Systèmes (DS) sales representative responsible for the order.
Format: `LASTNAME, Firstname` (e.g., `DOE, John`)
'
example: DOE, John
isMultiYear:
type: boolean
description: 'Indicates whether the order is part of a Multi-Year deal (i.e., duration longer than one year),
applicable for revenue types such as `YxC` or `AxC`.
'
example: true
hasExitClause:
type: boolean
description: 'Indicates whether the agreement includes an exit clause requiring the Final Customer to pay early termination fees
if they end the rental before the completion of the multi-year engagement.
'
example: true
recurringChargeBillingCycle:
$ref: '#/components/schemas/recurring_charge_billing_cycle'
opportunity:
type: string
description: 'Unique identifier for the sales opportunity as recorded in the **My Sales Pipeline** system.
This value helps link the order to its originating sales activity.
'
example: A1B2-C3D4E5
paymentTerms:
type: string
description: 'Payment terms for the order, as provided by the Finance Department.
Specifies the agreed period within which the payment must be made.
'
maxLength: 50
example: Net Date of Invoice + 60 days
licenseChargeConditions:
type: array
description: 'A list of conditions that determine when the license is charged for the order.
These conditions specify the circumstances under which the license fee is applied, such as:
- The number of users or seats that are licensed.
- The type of license or subscription being purchased.
- Any waiver given on the license or subscription.
- Any additional features or services that are included with the license.
The license charge conditions are used to calculate the total cost of the license and to ensure that the correct pricing is applied.
'
items:
$ref: '#/components/schemas/order_line'
required:
- transaction
- businessUnit
- billToSite
- soldToSite
- creationDateTime
- currency
- agreement
orders_search_req:
type: object
properties:
creationDateTime:
type: object
description: 'Returns orders created within a specified time range, using the `Creation` timestamp.
The maximum time window allowed for the search is **7 days** (calculated time to time).
Including this tag prompts the system to perform validations and automatically compute the `from` or `to` timestamp if either is missing.
Omitting this tag means the system will skip these validations and will not perform any implicit computation of the `from` or `to` values.
'
properties:
from:
# --- truncated at 32 KB (73 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/dassault/refs/heads/main/openapi/dassault-orders-api-openapi.yml