openapi: 3.1.1 info: title: APIs for the Order domain description: | This API provides a set of endpoints for the ordering domain : - Searching Orders and retrieving Order details. - Searching Price List, accreditated Portfolios, Products or Industry Process Experience - Searching final Customers - Searching & creating Contacts - Creating Order Request (asynchronous operation) and getting details on it (status & id of the created Purchase Order if successful ) Endpoints adhere to the following pattern for URL : /order/api4partners/{version}/{ressourceName}/[{action} or {id}] version: 4.0.0 contact: name: Partners APIs Documentation url: https://partners.3ds.com/ 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) security: - ApiKeyAuth: [] tags: - name: Orders description: > This section defines the operations related to purchase orders. The following operations are included in this section: - Searching Orders - Getting Order Details Note: The Read Orders API does not support retrieval of Purchase Order created for SOLIDWORKS CLOUD before 2020 July 20th. - name: Order Requests description: > This section defines the asynchronous operations related to order requests. An order request is a temporary placeholder stored in a pending buffer and processed by a scheduled batch job. The following operations are included in this section: - Create Order Request (asynchronous purchase order creation) - Get Order Request Details (retrieve a single order request) - name: Price-Lists description: | This section defines the operations related to Price Lists. - Retrieve Price Lists - name: Products description: | This section defines the operations related to Products: - Retrieve Portfolios and Industry Process Experiences - Retrieve Products from Portfolio or Industry Process Experience - Retrieve Package or Offer content - Retrieve Price List of Portfolio or Industry Process Experience - name: Customers description: | This section defines the operations related to final customers. - Retrieve Final Customers - name: Contacts description: | This section defines the operations related to contacts. - Search Contacts - Create New Contact - name: Order Creation description: > Catalog of all error codes and corresponding messages that can be returned during order creation by batch. Each entry provides a machine‑readable code and a detailed, user‑friendly description of the validation issue and suggested corrective action. ## Security | Code | Message | |------|---------| | API4P_FC3 | You are not authorized to sell to this Customer ``. Please verify the input and try again. | | API4P_RCI1 | The provided requestorContactId `` does not belong to an authorized Partner. Please verify the input and try again. | | API4P_RCI2 | The provided requestorContactId `` is not allowed to create purchase orders. Please verify the input and try again. | ## Business Unit | Code | Message | |------|---------| | API4P_BU3 | The provided value for Business Unit `` is obsolete. Please verify the input and try again. | | API4P_BU5 | The provided value for Business Unit `` does not match the BU declared in the row security definition of the requestorContactId `` targeted profile. Please verify the input and try again. | | API4P_BU6 | The provided value for Business Unit `` does not match with at least one of the BUs declared in the DA(GVA). Please verify the input and try again. | ## Accreditation | Code | Message | |------|---------| | API4P_PF3 | The value provided for the Portfolio `` is a GEOVIA portfolio. Note that the creation of GEOVIA licenses is not supported through the API. | | API4P_PR3 | The provided CA/LA product `` has not been declared on the provided Final Customer ``. Please verify the input and try again. | | API4P_PR5 | You are not accredited to sell the Product provided ``. Please verify the input and try again. | ## Sold To Site | Code | Message | |------|---------| | API4P_FC2 | The value for the provided soldToSite/id `` is flagged in the system as a 'None Usable' site. Please verify the input and try again. | | API4P_FC4 | The value for the provided soldToSite/id `` is not a legal entity. Please verify the input and try again. | ## Renewal Information | Code | Message | |------|---------| | API4P_CA4 | As the overall PO line duration is greater than 1 year, the Start Date is mandatory. Please verify the input and try again. | | API4P_CA401 | The provided Coterminous Date `` does not exist for the Final Customer ``. Please verify the input and try again. | | API4P_CD5 | The newCoterminousEndDate provided `` cannot be less than the current date. Please verify the input and try again. | | API4P_CD6 | The Business Unit setup does not allow setting a newCoterminousEndDate. Please verify the input and try again. | | API4P_ST1 | The provided year of the Start Date `` cannot be greater than the licenseEndYear. Please verify the input and try again. | | API4P_ST2 | The provided Start Date `` is greater than the End Date. Please verify the input and try again. | ## License Charge Conditions | Code | Message | |------|---------| | API4P_PR2 | The couple of values provided for the Trigram `` and the Product-Type `` are not valid for the provided Portfolio `` and Release ``. Please verify the input and try again. | | API4P_PF2 | The value provided for the Portfolio `` is not found or is incorrect. Please verify the input and try again. | | API4P_RL2 | The value provided for the Release `` is not valid for the provided Portfolio ``. Please verify the input and try again. | ## Revenue Type | Code | Message | |------|---------| | API4P_RT1 | The Revenue Type is a mandatory field. Please verify the input and try again. | | API4P_RT2 | The Revenue Type provided `` does not match an authorized value. Please verify the input and try again. | | API4P_RT3 | The selected Revenue Type `` is not available for the Price List ``, Product Trigram ``, Product Type ``, and Order Type New. Please verify the input and try again. | ## Price List | Code | Message | |------|---------| | API4P_PL2 | The selected Price List `` is not compatible with the authorized price lists for the Final Customer ``. Please provide a valid price list. | | API4P_PL3 | A value for `` was not provided or we were not able to default it. Please verify the input and try again. | ## Online Instance Id | Code | Message | |------|---------| | API4P_SE7 | The onlineInstanceSeatId value provided `` does not match any existing Online Instance Id belonging to the final customer ``. Please verify the input and try again. | | API4P_SA2.1 | The onlineServiceContactID `` does not belong to the provided soldToSite/id ``. Please verify the input and try again. | | API4P_SA2.2 | The onlineServiceContactID `` is an obsolete contact. Please verify the input and try again. | | API4P_SA3 | An Online Service Access Contact Id is mandatory for the provided Product ``. Please verify the input and try again. | ## Seat Id | Code | Message | |------|---------| | API4P_SE12 | The provided Seat Id `` does not match any existing Seat Id belonging to the final customer ``. Please verify the input and try again. | | API4P_SE13 | The provided Revenue Type `` does not match any of the revenue types for this existing Seat Id ``. Please verify the input and try again. | | API4P_SE14 | The provided product is not compatible with the provided Seat Id ``. Only one base product is authorized on a Standalone Seat. Please verify the input and try again. | | API4P_SE15 | The provided product is not compatible with the provided Seat Id ``. The Product Market information does not match the Seat Id Market information. Please verify the input and try again. | | API4P_SE16 | Either the onlineInstanceSeatId or the lineItemUuid is required to create the purchase order line. Please verify the input and try again. | | API4P_SE17 | The type of the provided onlineInstanceSeatId value `` is not Standalone/Network. This is not compatible with the provided product ``. Please verify the input and try again. | | API4P_SE18 | The provided product `` is not compatible with a new Seat Id. Please verify the input and try again. | ## Coupons | Code | Message | |------|---------| | API4P_CP1 | The Coupon Name cannot be used for this Agreement ``. Please verify the input and try again. | | API4P_CP2 | The provided value for Coupon Name `` is expired or yet to start. Please verify the input and try again. | | API4P_CP3 | The Territory of the transaction `` does not match at least one of the territories set in the Coupon. Please verify the input and try again. | | API4P_CP5 | The provided value for Coupon Name `` has already been used. Please verify the input and try again. | | API4P_CP7 | The provided value for Coupon Name `` cannot be used. The Portfolio or the Product Trigram does not match the one selected in the Purchase Order. Please verify the input and try again. | | API4P_CP8 | The provided value for Coupon Name `` cannot be used. The Revenue Type does not match the one selected in the Purchase Order Line. Please verify the input and try again. | | API4P_CP9 | Application of Coupon is not allowed for the Business Unit of the transaction ``. Please verify the input and try again. | | API4P_CN1 | The provided value for Coupon Name `` is not found or is incorrect. Please verify the input and try again. | | API4P_CN2 | The provided value for Coupon Name `` cannot be used. Only Line Level Discount Coupon with Discount Type **Price List Based** are allowed. Please verify the input and try again. | | API4P_CY1 | The provided value for Coupon Name/Year `` + `` cannot be used. The provided Year does not match an existing year set in the Purchase Order/PO Line/subline. Please verify the input and try again. | ## Sub-Distributor | Code | Message | |------|---------| | API4P_SD1 | The selected Business Unit of the transaction is not eligible for the use of Sub-Distributor. The proposed value was ignored. | | API4P_SD2 | The provided Sub-Distributor Id `` refers to an inactive Sub-Distributor. Please verify the input and try again. | | API4P_SD3 | The provided Sub-Distributor Id `` is not listed among authorized Sub-Distributors. Please verify the input and try again. | | API4P_SD4 | Support for the provided Sub-Distributor Id `` has not yet started for the given Bill To Site Id ``. Please verify the input and try again. | | API4P_SD5 | Support for the provided Sub-Distributor Id `` has expired for the given Bill To Site Id ``. Please verify the input and try again. | ## Opportunity | Code | Message | |------|---------| | API4P_OP1 | The value for the Final Customer `` is not found or is incorrect. Please verify the input and try again. | | API4P_OP3 | The provided Opportunity Id `` is not found or is incorrect. Please verify the input and try again. | | API4P_OP4 | The value for the provided Opportunity Id `` is already used in another Purchase Order. So it cannot be used again. | ## Contact | Code | Message | |------|---------| | API4P_BT1 | The value for the provided Bill To Contact Id `` is not found or is incorrect. Please verify the input and try again. | | API4P_SO1 | The value for the provided Sold To Contact Id `` is not found or is incorrect. Please verify the input and try again. | | API4P_SR4 | The provided DS Sales Representative e-mail `` is not valid. Please verify the input and try again. | | API4P_BTSR1 | The provided Bill To Sales Representative Contact Id `` is associated with the Bill-To site but is not valid as a Bill-To Sales Representative. Verify the input and ensure the contact has either the DS_ECO_554 (Sales Expert) or DS_ECO_506 (SALES) role. | ## Agreement | Code | Message | |------|---------| | API4P_AT1 | There is no Agreement Type defined in our system for the provided agreementType ``. Please verify the input and try again. | - name: Order Submission description: > Catalog of error codes and corresponding messages that can be returned during purchase order submission by batch processing. Each entry provides a machine-readable code and a detailed, user-friendly description of the validation issue and suggested corrective action. ## Placeholder | Code | Message | |------|---------| | TBD | Error codes for the submit batch workflow will be documented here before release. | - name: apikeys description: > This section defines the operations related to API keys . Current API key management still requires some interaction with Dassault Systèmes Information System (IS) team. This process will likely be updated in the future to provide more autonomy and reactivity on partner side. Below is the description of the process when a partner is onboarded on APIForPartners program : 1. Dassault Systèmes IS team will initialize an API key and communicate it to partner Admin through a secured channel : - **Recommendation is to use a 1-1 discussion between Partner Admin and Dassault Systèmes IS person in charge within the dedicated 3DSwym Community** - **Do NOT use email or any unsecured communication channel or with wider audience** 2. Partner Admin will then use this initial APIKEY value to authenticate and generate a new API key using the API 3. Partner admin will communicate back (within same secured channel) to Dassault Systèmes IS person in charge the **hashed_key** attributed from the API (NOT the API key itself) - The Hash operation is NOT reversible, so Dassault Systèmes will NOT have knowledge about partner API key. - Partner Admin must store securely the generated API key (same level of confidentiality as a password) 4. Dassault Systèmes IS team will update API Gateway configuration with the new API key (in practice with the hash value provided) and inform Partner when it is ready to use. 5. Partner can then use this newly generated APIKEY to interact with all the available APIs. For the case of revocation and request of a new API key, steps 2 to 5 have to be followed. - name: Schemas description: > This section list individuals Schemas or schema fragments referenced in the API. It can be useful for focus on a particular fragment of body request or response. paths: /order/api4partners/v0/price-lists/search: get: summary: Get Price Lists description: | Retrieves the Price Lists for the authenticated user. tags: - Price-Lists operationId: searchPriceList responses: '200': $ref: '#/components/responses/200_price-lists_search' '401': $ref: '#/components/responses/401_response' '403': $ref: '#/components/responses/403_response' '429': $ref: '#/components/responses/429_response' '500': $ref: '#/components/responses/500_response' /order/api4partners/v0/apikeys: post: summary: Generate a new API key description: Generate a new API key and its hash. tags: - apikeys operationId: generateApiKey responses: '200': $ref: '#/components/responses/200_post_apikeys' '401': $ref: '#/components/responses/401_response' '403': $ref: '#/components/responses/403_response' '429': $ref: '#/components/responses/429_response' /order/api4partners/v0/product-price-list/search: post: summary: Get Product Prices description: > Retrieves the List Price, Partner Discount, First Year Discount (if applicable), and computed partner prices for all Products and Migration Paths associated with a given Portfolio or Industry Process Experience (IPE). The API applies the same logic used by DSx.Client Order for: - Selecting the latest valid release of a product - Retrieving revenue types - Fetching Price List values - Applying Partner Margins - Calculating Partner Prices and First Year Discount Prices - Enforcing accreditation checks - Pagination based on Product Number ordering (ascending) Pagination: Sorting is based on ascending `productNumber`, with pagination controlled by `skip` and `top`. Disclaimer: Prices in the API response are as per standard discount of distribution agreement. Additional adjustments (tiering, Footprint premium..) are not factored in. tags: - Products operationId: getProductPriceList parameters: - name: skip in: query description: | Number of product records to skip. Used for pagination. schema: type: integer minimum: 0 default: 0 - name: top in: query description: | Number of product records to return. schema: type: integer minimum: 1 maximum: 100 default: 100 requestBody: $ref: '#/components/requestBodies/product_price_list_req' responses: '200': $ref: '#/components/responses/200_post_product_price_list' '400': $ref: '#/components/responses/400_post_product_price_list' '401': $ref: '#/components/responses/401_response' '403': $ref: '#/components/responses/403_response' '404': $ref: '#/components/responses/404_post_product_price_list' '429': $ref: '#/components/responses/429_response' '500': $ref: '#/components/responses/500_response' /order/api4partners/v0/product-information/search: post: summary: Get Products description: > Returns detailed product information for all Products and Migration Paths associated with a given accredited Portfolio or Industry Process Experience (IPE). For each product or migration path, the API retrieves: - Product Number, Trigram, Product Type - Default Support Level - Licensing Scheme - Dassault Systèmes Offering - Remote Access flag - Extended Enterprise User flag - Release-specific information (Release Name, Product Name) - Portfolio Name - Pre-Requisite (if configured) - Availability status Pagination: Sorting is based on ascending `productNumber`, with pagination controlled by `skip` and `top`. tags: - Products operationId: getPortfolioInformation parameters: - name: skip in: query description: | Number of product records to skip. Used for pagination. schema: type: integer minimum: 0 default: 0 - name: top in: query description: | Number of product records to return. schema: type: integer minimum: 1 maximum: 100 default: 100 requestBody: $ref: '#/components/requestBodies/portfolio_information_req' responses: '200': $ref: '#/components/responses/200_post_portfolio_information' '400': $ref: '#/components/responses/400_post_portfolio_information' '401': $ref: '#/components/responses/401_response' '403': $ref: '#/components/responses/403_response' '404': $ref: '#/components/responses/404_post_portfolio_information' '429': $ref: '#/components/responses/429_response' '500': $ref: '#/components/responses/500_response' /order/api4partners/v0/package-offer-content/search: post: tags: - Products summary: Get Package / Offer Content operationId: getPackageOfferContent description: > Retrieves the commercial content of a Package or Offer for the given release. parameters: - name: skip in: query description: | Number of product records to skip. Used for pagination. schema: type: integer minimum: 0 default: 0 - name: top in: query description: | Number of product records to return. schema: type: integer minimum: 1 maximum: 10 default: 10 requestBody: $ref: '#/components/requestBodies/package_offer_content_req' responses: '200': $ref: '#/components/responses/200_post_package_offer_content' '400': $ref: '#/components/responses/400_post_package_offer_content' '401': $ref: '#/components/responses/401_response' '403': $ref: '#/components/responses/403_response' '404': $ref: '#/components/responses/404_post_package_offer_content' '429': $ref: '#/components/responses/429_response' '500': $ref: '#/components/responses/500_response' /order/api4partners/v0/order-requests: post: summary: Create Order Request description: > Submits a **request** to create a purchase order. The incoming payload is validated against the request schema. When the payload passes validation it is stored in a **pending order-request buffer** (an intermediate holding area) that will be processed later by a scheduled batch job. A scheduled batch job, which runs periodically, processes the buffered requests one-by-one and attempts to create the purchase orders. Synchronous validation covers schema and shape only. **Date coherence** between the effective license line start date and the computed end date is enforced during batch processing. Use **Get Order Request** to retrieve `batchProcessingErrors` when processing fails (e.g. `API4P_ST2` when the effective start date is greater than the computed end date). On success, the API returns HTTP 201 Created. **Important Notes :** - For now, the scheduled batch job will run twice each hour : every 30 minutes at xx:20 & xx:50. - This scheduling may get updated in the future (during BETA Phase itself or later) depending on feedbacks from Partners and actual impact analysis on DSx.Order ressources. tags: - Order Requests x-badges: - name: Beta color: orange operationId: createOrderRequest requestBody: $ref: '#/components/requestBodies/order_requests_create_req' responses: '201': $ref: '#/components/responses/201_post_order_requests_create' '400': $ref: '#/components/responses/400_post_order_requests_create' '401': $ref: '#/components/responses/401_response' '403': $ref: '#/components/responses/403_response' '429': $ref: '#/components/responses/429_response' '500': $ref: '#/components/responses/500_response' /order/api4partners/v0/order-requests/{id}: get: summary: Get Order Request Details description: > Retrieves details of a single order request object identified by its id. The response includes the request type (create or submit), processing status, creation timestamp, the associated purchase order when processing completes, and batch processing errors when processing fails. tags: - Order Requests x-badges: - name: Beta color: orange operationId: getOrderRequestDetails parameters: - name: id in: path required: true description: Unique identifier of the order request. schema: type: string example: OR_000000000123 responses: '200': $ref: '#/components/responses/200_get_order_requests' '400': $ref: '#/components/responses/400_get_order_requests' '401': $ref: '#/components/responses/401_response' '403': $ref: '#/components/responses/403_response' '404': $ref: '#/components/responses/404_get_order_requests' '429': $ref: '#/components/responses/429_response' '500': $ref: '#/components/responses/500_response' /order/api4partners/v0/customers/search: get: summary: Get Customers description: > Returns a paginated list of all final customers associated with the partner site of the authenticated user. Supports pagination with `skip` and `top` parameters to control result size and offset. tags: - Customers operationId: getCustomers parameters: - name: skip in: query description: Number of items to skip in the search results. schema: type: integer minimum: 0 default: 0 example: 0 - name: top in: query description: Maximum number of items to retrieve in search results. schema: type: integer minimum: 1 maximum: 100 default: 100 example: 100 responses: '200': $ref: '#/components/responses/200_customers_search' '400': $ref: '#/components/responses/400_customers_search' '401': $ref: '#/components/responses/401_response' '403': $ref: '#/components/responses/403_response' '429': $ref: '#/components/responses/429_response' '500': $ref: '#/components/responses/500_response' /order/api4partners/v0/contacts/search: post: summary: Search Contacts using various filters description: > Searches for contacts based on various filter criteria such as name, site, login, and more. Supports pagination through `skip` and `top` query parameters. tags: - Contacts operationId: searchContacts parameters: - name: skip in: query description: > The number of records to skip in the result set. Use this for paginating through results. Defaults to 0 if not specified. For example, `skip=20` will skip the first 20 records. schema: type: integer minimum: 0 default: 0 - name: top in: query description: > The maximum number of records to return in the response. Use this to limit the size of the result set. Defaults to 10 if not specified. For example, `top=10` will return up to 10 records starting from the position defined by `skip`. schema: type: integer minimum: 1 maximum: 100 default: 10 requestBody: $ref: '#/components/requestBodies/contacts_search_req' responses: '200': $ref: '#/components/responses/200_post_contacts_search' '400': $ref: '#/components/responses/400_post_contacts_search' '401': $ref: '#/components/responses/401_response' '403': $ref: '#/components/responses/403_response' '429': $ref: '#/components/responses/429_response' '500': $ref: '#/components/responses/500_response' /order/api4partners/v0/contacts: post: summary: Create Contact description: > Creates a new final customer contact record. The request body must contain all mandatory contact fields. On success, the API returns HTTP 201 Created with the complete representation of the newly created contact. If a contact with the same email already exists in the system, the API returns HTTP 409 Conflict. tags: - Contacts operationId: createContact requestBody: $ref: '#/components/requestBodies/contact_create_req' responses: '201': $ref: '#/components/responses/201_post_contact_create' '400': $ref: '#/components/responses/400_post_contact_create' '401': $ref: '#/components/responses/401_response' '403': $ref: '#/components/responses/403_response' '409': $ref: '#/components/responses/409_post_contact_create' '429': $ref: '#/components/responses/429_response' '500': $ref: '#/components/responses/500_response' /order/api4partners/v1/orders/search: post: summary: Search Orders 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_v1 parameters: - name: skip in: query description: > The number of records to skip in the result set. Use this for paginating through results. Defaults to 0 if not specified. For example, `skip=20` will skip the first 20 records. schema: type: integer minimum: 0 default: 0 - name: top in: query description: > The maximum number of records to return in the response. Use this to limit the size of the result set. Defaults to 10 if not specified. For example, `top=10` will return up to 10 records starting from the position defined by `skip`. schema: type: integer minimum: 1 maximum: 100 default: 10 requestBody: $ref: '#/components/requestBodies/orders_search_req' responses: '200': $ref: '#/components/responses/200_post_orders_search' '400': $ref: '#/components/responses/400_post_orders_search' '401': $ref: '#/components/responses/401_response' '403': $ref: '#/components/responses/403_response' '429': $ref: '#/components/responses/429_response' '500': $ref: '#/components/responses/500_response' /order/api4partners/v1/orders/{id}: get: summary: Get Order details description: > Retrieves complete details of an order given its Dassault Systèmes reference. tags: - Orders operationId: getOrderDetails_v1 parameters: - name: id in: path required: true description: Dassault Systèmes order reference identifier schema: type: string example: PO_000123456789 responses: '200': $ref: '#/components/responses/200_get_orders' '400': $ref: '#/components/responses/400_get_orders' '401': $ref: '#/components/responses/401_response' '403': $ref: '#/components/responses/403_response' '404': $ref: '#/components/responses/404_get_orders' '429': $ref: '#/components/responses/429_response' '500': $ref: '#/components/responses/500_response' /order/api4partners/v1/accreditations/search: get: summary: Get Portfolio / IPE Accreditations description: > Retrieves accreditations associated with the authenticated user. Supports pagination with `skip` and `top` parameters. tags: - Products operationId: searchAccreditations_v1 parameters: - name: skip in: query description: Number of items to skip in the search results. schema: type: integer minimum: 0 default: 0 example: 0 - name: top in: query description: Maximum number of items to retrieve in search results. schema: type: integer minimum: 1 maximum: 100 default: 100 example: 100 responses: '200': $ref: '#/components/responses/200_accreditations_search' '400': $ref: '#/components/responses/400_accreditations_search' '401': $ref: '#/components/responses/401_response' '403': $ref: '#/components/responses/403_response' '429': $ref: '#/components/responses/429_response' '500': $ref: '#/components/responses/500_response' components: securitySchemes: ApiKeyAuth: description: API key to be provided in header 'X-API-KEY' type: apiKey in: header name: X-API-KEY schemas: country_code: type: string description: ISO3 Code (3 capital letters code) of the country example: FRA country_name: type: string description: | Country Location example: France price_list_id: type: integer maxLength: 2 description: | Unique identifier of Price List. example: 17 currency: type: string description: > Three-letter ISO 4217 currency code representing the transaction currency. Must be exactly 3 uppercase alphabetic characters (e.g., `USD` for US Dollar, `EUR` for Euro, `INR` for Indian Ruppee). minLength: 3 maxLength: 3 pattern: ^[A-Z]{3}$ example: USD price-lists_search_data: type: array description: >- List of **Countries** and **Price-Lists** that the authorized user is accredited to sell. items: type: object description: Summary information for a price list query. properties: countryCode: $ref: '#/components/schemas/country_code' countryName: $ref: '#/components/schemas/country_name' priceLists: type: array items: type: object description: > A predefined set of product prices applicable to a specific country and currency. Each price list defines how products are priced within a particular market or region and serves as a reference for calculating order amounts. properties: id: $ref: '#/components/schemas/price_list_id' name: type: string description: Name of the Price List example: EMEA Price List currency: $ref: '#/components/schemas/currency' hasFuturePriceList: type: boolean description: > Indicates whether a future version of the price list has been declared. - true: A future-dated price list exists. - false: No future price list has been declared. examples: - true - false effectiveDate: type: - string - 'null' format: date description: > The date when the future price list takes effect. If 'null', it indicates that no future price list version has been declared. examples: - '2025-09-09' - null info: type: object description: >- Metadata section of the response providing execution status and result summary. properties: success: type: boolean description: Indicates whether the API request was executed successfully. statusCode: type: integer description: HTTP status code corresponding to the response. estimatedSearchCount: type: integer description: Estimated number of results matching the search criteria. required: - success - statusCode 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. This allows API consumers to programmatically recognize and handle the error appropriately. The URI follows the format: `errors::` Example values include: - `errors:3dx:invalidRequest` - `errors:3dx:authenticationGenericError` - `errors:3dx:resourceNotFound` - `errors:3dx:resourceConflict` - `errors:3dx:internalServerError` enum: - errors:3dx:invalidRequest - errors:3dx:authenticationGenericError - errors:3dx:resourceNotFound - errors:3dx:resourceConflict - 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. Useful when multiple issues are detected at once. 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 401_basic_unauthorized: type: object description: Unauthorized properties: message: type: string required: - message 403_basic_forbidden: type: object description: Access Forbidden. properties: message: type: string required: - message 429_too_many_requests: type: object description: Too Many Requests properties: message: type: string required: - message accreditation_type: type: string description: | Category of accreditation. maxLength: 1 enum: - R - I x-enumDescriptions: R: > Portfolio. The portfolio to which the product being ordered belongs. This field identifies the specific product family or category to which the ordered product belongs. For example, a product might belong to a portfolio such as "CATIA", "ENOVIA", or "SIMULIA". I: > Industry Process Experience. A Dassault Systèmes offering designed to correspond to the business process used by a team in the context of the solution. Delivered through the 3DEXPERIENCE platform, Industry Process Experiences (IPEs) are composed of Roles. When combined, they make up Industry Solution Experiences. example: I accreditation_id: type: string maxLength: 15 description: > Unique identifier of the Portfolio / IPE. The list of accreditated Portfolios / IPEs can be retrieved via the **Get Portfolio / IPE Accreditations** API. examples: - PRTF0XX - IPE000XXXXX product_number: type: string description: > **Product Number** is a unique alphanumeric identifier assigned to a specific software product, license, or service within an enterprise portfolio. It serves as the primary key during Order Processing. Used in purchase orders, quotes, and invoices to specify the exact item being transacted. maxLength: 20 example: 6NB-XXX-YY order_revenue_type: type: string description: > **Revenue Type** defines the classification of a financial transaction within enterprise licensing and sales systems. It standardizes how revenue is recognized, billed, and managed. Used in order processing, financial reporting, and compliance. enum: - ALC - ASC - ELC - PLC - PSC - QLC - QRC - SLC - SSC - TB2 - TB3 - TS2 - TS3 - TS5 - ULC - USC - XLC - XSC - YLC - YSC x-enumDescriptions: ALC: Annual License Charge ASC: Annual Service Charge ELC: Evaluation License Charge PLC: Primary License Charge PSC: Primary Service Charge QLC: Quarterly License Charge QRC: Quarterly Service Charge SLC: Service/support license charge SSC: Service Charge TB2: Term-Based License Charge 2 TB3: Term-Based License Charge 3 TS2: Term-Based Service Charge 2 TS3: Term-Based Service Charge 3 TS5: Term-Based Service Charge 5 ULC: Administration license charge USC: Upfront Service Charge XLC: Extended License Charge XSC: Extended Service Charge YLC: Yearly License Charge YSC: Yearly Service Charge example: ALC product_price_list_data: type: array description: List of products and migration paths included in the price list. items: type: object required: - number - prices properties: number: $ref: '#/components/schemas/product_number' description: Product Number of the item prices: type: array description: Array of revenue types and computed prices items: type: object required: - revenueType - dsListPrice - distributorDiscountPercentage - distributorPrice properties: revenueType: $ref: '#/components/schemas/order_revenue_type' dsListPrice: type: number format: float description: > Unit List Price (string without commas) Decimal places depend on currency rules. **Note:** Numeric values may include additional trailing decimal places due to serialization behavior of the underlying platform. The business-defined precision for this field is 2 decimal places. Digits beyond this precision are non-significant and should be ignored. example: 21770 distributorDiscountPercentage: type: number format: float description: > Standard Distributor Discount (%) **Note:** Numeric values may include additional trailing decimal places due to serialization behavior of the underlying platform. The business-defined precision for this field is 10 decimal places. Digits beyond this precision are non-significant and should be ignored. example: 25 distributorPrice: type: number format: float description: > Price after applying standard distributor discount **Note:** Numeric values may include additional trailing decimal places due to serialization behavior of the underlying platform. The business-defined precision for this field is 2 decimal places. Digits beyond this precision are non-significant and should be ignored. example: 16327.5 firstYearDiscountPercentage: type: number format: float description: > Increased Distributor Discount (%). Applicable only when the product is eligible for First Year Discount. **Note:** Numeric values may include additional trailing decimal places due to serialization behavior of the underlying platform. The business-defined precision for this field is 10 decimal places. Digits beyond this precision are non-significant and should be ignored. example: 45 firstYearDiscountPrice: type: number format: float description: > Price after applying increased distributor discount. Applicable only when the product is eligible for First Year Discount. **Note:** Numeric values may include additional trailing decimal places due to serialization behavior of the underlying platform. The business-defined precision for this field is 2 decimal places. Digits beyond this precision are non-significant and should be ignored. example: 495 4xx_post_product_price_list: type: object description: Response body returned when product prices could not be retrieved. properties: data: type: array description: Always an empty array in case of error responses. maxItems: 0 items: {} example: [] info: $ref: '#/components/schemas/info' error: $ref: '#/components/schemas/error' required: - data - info - error product_trigram: type: string description: | The trigram code for the product. maxLength: 10 example: PCS_OC product_type: type: string description: Type of the product. enum: - A - H - CS - C - E - DS - M - NU - O - P - SC - S - AS - ST - TO x-enumDescriptions: A: >- Add-On. An additional feature or component that enhances the functionality of a product. H: >- Auxiliary. A supplementary product or service that supports the primary product. CS: >- Casual Named User. A type of user license that allows for occasional or infrequent use of a product. C: >- Configuration. A specific setup or arrangement of a product's features or components. E: >- Enterprise. A product or service designed for large-scale or enterprise-level use. DS: >- Machine Based. A product or service that is licensed or used on a machine or device. M: >- Migration Path. A product or service that helps customers transition from one product to another. NU: >- Named User. A type of user license that allows for regular or frequent use of a product by a specific individual. O: >- Offer. A product or service that is being promoted or offered as a special deal. P: >- Package. A collection of products or services that are bundled together for sale. SC: >- Service. A product or service that provides support or assistance to customers. S: >- Shareable. A product or service that can be shared among multiple users or devices. AS: >- Single Add-On. A single additional feature or component that enhances the functionality of a product. ST: >- System. A product or service that is designed to work as a complete system or solution. TO: >- Token-Based. A product or service that uses tokens or other forms of authentication to manage access. example: NU default_support_level: type: string description: | Default Support Level enum: - A - B - 'N' - S - Z - L x-enumDescriptions: A: Advantage B: To be completed 'N': None S: Secure Z: Not Applicable L: Specific example: A licensing_scheme: type: string description: | Licensing Scheme code enum: - ADD - BEU - CAS - CB - CON - MAB - NA - NAM - NOD - PCK - PUB - SNL - SPA - SPC - SPD - SPS - SS - STD - SVC - SYS - TBC - TBD - TBQ - TOC - TOK x-enumDescriptions: ADD: Add-On BEU: BusinessExperience-UsageBased CAS: Casual Named User CB: Credit Based CON: Concurrent MAB: Machine Based NA: Not Applicable NAM: Named User NOD: Nodelock PCK: Packaged Offering PUB: Publishing SNL: SolidNetWork (SNL) SPA: System - Per Application SPC: Specific SPD: System - Per document SPS: System - Per Server SS: System (per site) STD: Single User (Standalone) SVC: Service SYS: System TBC: To be completed TBD: Token-Based (Document) TBQ: Token-Based (Query Calls) TOC: Token Based "Credit" TOK: Token Based example: NAM ds_offering: type: string description: | Dassault Systèmes offering Type. enum: - PCK - LIC - NA - ONL - SPC - HW x-enumDescriptions: PCK: >- Packaged Offering. A bundled offering that combines licensed programs and online services. LIC: Licensed Program. On-premises software. NA: Not Applicable. Items that are not governed by the CLOSA. ONL: Online Services. Cloud-based services. SPC: >- Specific. Items covered by a separate agreement rather than the standard CLOSA. HW: >- Auxiliary. Non-software items such as hardware, peripherals, or any item that is not software. example: ONL release_name: type: string description: | **Release Name** identifies a specific version of a software maxLength: 50 example: 3DEXPERIENCE R2025x product_name: type: string description: | The name of the product. This field specifies the title or label of the product. maxLength: 200 example: Generic Product Standard with Cloud Services availability_status: type: integer description: Availability enumeration (1 to 7) enum: - 1 - 2 - 3 - 4 - 5 - 6 - 7 x-enumDescriptions: '1': General Availability '2': Limited Availability '3': Controlled Availability '4': Partner '5': Pre Availability '6': Deprecated Availability '7': Technical Component example: 1 portfolio_name: type: string description: > The portfolio to which the product belongs. This field identifies the specific product family or category to which the product belongs. For example, a product might belong to a portfolio such as "CATIA", "ENOVIA" or "SIMULIA". maxLength: 50 example: CATIA portfolio_information_data: type: array description: | List of products and migration paths for the specified Portfolio/IPE items: type: object properties: number: $ref: '#/components/schemas/product_number' description: Product Number of the item trigram: $ref: '#/components/schemas/product_trigram' type: $ref: '#/components/schemas/product_type' defaultSupportLevel: $ref: '#/components/schemas/default_support_level' licensingScheme: $ref: '#/components/schemas/licensing_scheme' dsOffering: $ref: '#/components/schemas/ds_offering' remoteAccess: type: boolean example: true extendedEnterpriseUser: type: boolean example: true release: $ref: '#/components/schemas/release_name' description: | Latest commercially available Product release name. name: $ref: '#/components/schemas/product_name' prerequisite: type: string description: Release-dependent commercial prerequisite example: '' availabilityStatus: $ref: '#/components/schemas/availability_status' portfolio: $ref: '#/components/schemas/portfolio_name' 4xx_post_portfolio_information: type: object description: >- Response body returned when portfolio / IPE information could not be retrieved. properties: data: type: array description: Always an empty array in case of error responses. maxItems: 0 items: {} example: [] info: $ref: '#/components/schemas/info' error: $ref: '#/components/schemas/error' required: - data - info - error quantity: type: integer description: The quantity of the product being ordered. minimum: 1 example: 2 package_offer_content_data: type: array description: | Composition of a package/offer. List of product number, its portfolio, available release and quantity. items: type: object required: - number - portfolio - release - quantity properties: number: $ref: '#/components/schemas/product_number' description: Product Number of the item portfolio: $ref: '#/components/schemas/portfolio_name' release: $ref: '#/components/schemas/release_name' quantity: $ref: '#/components/schemas/quantity' description: Quantity of item in the package/offer 4xx_post_package_offer_content: type: object description: >- Response body returned when package offer contents could not be retrieved. properties: data: type: array description: Always an empty array in case of error responses. maxItems: 0 items: {} example: [] info: $ref: '#/components/schemas/info' error: $ref: '#/components/schemas/error' required: - data - info - error orderRequest_requestor: type: string description: > Unique identifier of the contact person who submitted the order‑creation request. The contact person who submitted the new order creation request must have the appropriate roles or permissions in the system to create or modify specific component associated with this API. pattern: ^C[0-9]{11}$ example: C00001234567 id: type: string description: Unique identifier of the sales business unit. minLength: 5 maxLength: 5 example: BU001 billto_site: type: object description: | Lightweight representation of a **Legal Entity**. Only the site location identifier (`locationId`) are exposed. properties: locationId: type: integer description: >- A unique identifier representing the company's location. Must be an integer between 1 and 999. **Business rule** – This rule is applied **for every request**: 1. If a `locationId` is supplied, the backend checks whether it belongs to the legal entity identified by `id`. 2. **If the supplied value is valid**, it is used unchanged. 3. **If the supplied value is missing or invalid**, the system falls back to the **primary location** of that entity (when a primary location exists). If no primary location exists, the **first configured location** (Location #1) for that `id` is used instead. The resolved `locationId` is persisted on the Purchase Order. minimum: 1 maximum: 999 example: 2 final_customer_site_id: type: string description: > A unique identifier for the final customer company. The identifier belongs to the Legal Entity Family that has no partnership agreement with Dassault Systèmes (i.e., a pure final customer site) and that is not a branch office of a final customer. maxLength: 15 example: '100012345678901' final_customer_site: type: object description: > Lightweight representation of a **Legal Entity**. Only the legal‑entity identifier (`id`) and the site location identifier (`locationId`) are exposed. properties: id: $ref: '#/components/schemas/final_customer_site_id' description: >- A unique identifier for the final customer company. Only legal‑entity identifiers are permitted; branch‑office identifiers are not allowed. locationId: type: integer description: >- A unique identifier representing the company's location. Must be an integer between 1 and 999. **Business rule** – This rule is applied **for every request**: 1. If a `locationId` is supplied, the backend checks whether it belongs to the legal entity identified by `id`. 2. **If the supplied value is valid**, it is used unchanged. 3. **If the supplied value is missing or invalid**, the system falls back to the **primary location** of that entity (when a primary location exists). If no primary location exists, the **first configured location** (Location #1) for that `id` is used instead. The resolved `locationId` is persisted on the Purchase Order. minimum: 1 maximum: 999 example: 2 contact_id: type: string description: Unique identifier of the contact person. pattern: ^C[0-9]{11}$ example: C00001234567 contact_id_or_empty: type: string description: Unique identifier of the contact person. pattern: ^(|C[0-9]{11})$ examples: - C00001234567 - '' NON_COTERM: title: NON_COTERM type: string const: NON_COTERM description: > **Non Coterminous** Each license or subscription line item will have its own independent renewal date, rather than aligning to a common anniversary date shared across multiple licenses. For SolidWorks Desktop licenses under Seat Id control, all associated Network Licenses or add-ons automatically inherit and align with the Seat Id’s end date for consistency. **Business rule** – When `anniversaryMode` is set to `NON_COTERM`, each element in the `licenseChargeConditions` array must include a `duration` field. anniversary_mode_non_coterminous: type: object title: Non Coterminous description: | Non Coterminous properties: anniversaryMode: $ref: '#/components/schemas/NON_COTERM' required: - anniversaryMode additionalProperties: false COTERM_ALIGN: title: COTERM_ALIGN type: string description: > **First Year Coterminous Align (date + year)** Standardize the renewal dates of multiple licenses under a single, recurring anniversary date. This mode allows customers to align disparate license end dates, even if purchased at different times into a unified renewal cycle, simplifying administrative tracking, billing, and support management. const: COTERM_ALIGN renewal_coterminous_date: type: string description: > Month‑day (MM‑DD) that serves as the recurring renewal anchor when **anniversaryMode** is set to *First Year Coterminous Align*. The value must match the `MM‑DD` pattern and existing at the Final Customer site. The list of allowed coterminous dates can be retrieved via the **Get Customers** API. If the desired date is not present in that list, the `anniversaryMode` field value should be set `COTERM-NEW` and a valid `newCoterminousEndDate` must be supplied. pattern: ^(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$ example: 06-30 license_end_year: type: string description: > Calendar year (YYYY) that indicates the final year the licence should remain active when **anniversaryMode** is set to *First Year Coterminous Align*. This year can be combined with the `coterminousDate` (MM‑DD) to determine the exact licence end‑date for multi‑year orders. pattern: ^\d{4}$ example: '2029' anniversary_mode_coterminous_month_day: type: object title: First Year Coterminous Align description: | First Year Coterminous Align properties: anniversaryMode: $ref: '#/components/schemas/COTERM_ALIGN' coterminousDate: $ref: '#/components/schemas/renewal_coterminous_date' licenseEndYear: $ref: '#/components/schemas/license_end_year' required: - anniversaryMode - coterminousDate - licenseEndYear additionalProperties: false COTERM_NEW: title: COTERM_NEW type: string description: > **First Year Coterminous with New Date** Use a specific future end date when the desired coterminous month-day is not yet available at the customer site, or when ordering on an existing Seat Id that should align to a coterminous date already recorded at the site. See `newCoterminousEndDate` for year-handling rules that differ between new and existing Seat Id lines. const: COTERM_NEW new_coterminous_end_date: type: string description: > New coterminous end date (ISO‑8601 `YYYY‑MM‑DD`) used when **anniversaryMode** is `COTERM_NEW`. Required when a specific future month-day that does not yet exist at the Final Customer site must be recorded. **Business rule** – Year handling for `COTERM_NEW` (evaluated during batch processing): - **New Seat Id** (lines where `licenseChargeConditions[].onlineInstanceSeatId` is empty or omitted and a new Seat Id is created): - When the month-day (`MM-DD`) from `newCoterminousEndDate` is **not** yet recorded on the Final Customer site, the date is recorded on the customer. - The first-year license end date and `licenseEndYear` on the license charge line are derived from the full `newCoterminousEndDate` value (year and month-day). - **Existing Seat Id** (lines where `licenseChargeConditions[].onlineInstanceSeatId` contains an existing Seat Id belonging to the Final Customer): - When the Final Customer site **already has** the month-day (`MM-DD`) from `newCoterminousEndDate` among its coterminous dates, the API uses that month-day for the license end date but **does not use the year** from `newCoterminousEndDate`. The license end year is the **following calendar year** (the year after the year in `newCoterminousEndDate`), not the year supplied in the request. **Partner guidance:** Do not submit February 29 (`YYYY-02-29`), even when the selected year is a leap year. Use February 28 (`YYYY-02-28`) instead. The Final Customer site records February 28 as the recurring anniversary date; in leap years, the license end date may still fall on February 29. format: date example: '2025-06-30' anniversary_mode_coterminous_new_date: type: object title: First Year Coterminous with New Date description: > First Year Coterminous with New Date. Use when the desired coterminous month-day is not yet available at the Final Customer site, or when ordering on an existing Seat Id that should align to a coterminous date already recorded at the site. See `newCoterminousEndDate` for year-handling rules that differ between new and existing Seat Id lines. properties: anniversaryMode: $ref: '#/components/schemas/COTERM_NEW' newCoterminousEndDate: $ref: '#/components/schemas/new_coterminous_end_date' required: - anniversaryMode - newCoterminousEndDate additionalProperties: false renewal_information: type: object description: > **Renewal Information** – defines how the renewal date of a software licence (or subscription) is aligned for a customer. Renewal date alignment mechanism that standardizes the end date of software licenses to a common, recurring date (e.g., a specific day and month each year). This simplifies renewal management, billing cycles, and administrative tracking by ensuring all licenses for a customer expire and renew on the same date annually, rather than scattered throughout the year. Possible configurations are driven by anniversaryMode attribute value : | anniversaryMode value | Description | | ----------- | ----------- | | NON_COTERM | Non Coterminous | | COTERM_ALIGN | First Year Coterminous Align | | COTERM_NEW | First Year Coterminous with New Date | oneOf: - $ref: '#/components/schemas/anniversary_mode_non_coterminous' - $ref: '#/components/schemas/anniversary_mode_coterminous_month_day' - $ref: '#/components/schemas/anniversary_mode_coterminous_new_date' discriminator: propertyName: anniversaryMode mapping: NON_COTERM: '#/components/schemas/anniversary_mode_non_coterminous' COTERM_ALIGN: '#/components/schemas/anniversary_mode_coterminous_month_day' COTERM_NEW: '#/components/schemas/anniversary_mode_coterminous_new_date' email: type: string description: E‑mail address of the employee person. maxLength: 70 example: Jini.Doe@3ds.com customer_requested_arrival_date: type: string description: > Customer Requested Arrival Date (CRAD) indicates the date by which the Final Customer requests delivery of the Dassault Systèmes 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. - Format: ISO 8601 format (YYYY-MM-DD) format: date example: '2025-05-31' billto_po_reference: type: string maxLength: 60 description: > Identifier of the order as recorded in the **Bill-To** site's ordering system. If available, this reference will also appear on the Dassault Systèmes invoice. Must be a string with a maximum length of 60 characters. example: EXAMPLE-CORP-20250518 description: type: string description: Short description given to the Purchase Order / Renewal Notification. maxLength: 30 example: XYZ Company Order 50 products recurring_charge_billing_cycle: type: string description: > Identifies how often invoices are sent for ALC and ASC licenses. In the event of prorating (to an anniversary date, in the first month, or in the first quarter) or cancellation and refund or overpayment, the prorate calculation is based on 30 day months. enum: - MON360 - QUA360 - BIANN360 - ANN360 - FULL360 - IMM360 - MONR360 - QUAR360 - BIANNR360 - ANNR360 x-enumDescriptions: MON360: >- Calendar Month. Bill recurring license charges through the end of the current calendar month and for full-month periods thereafter (or until the indicated anniversary date if earlier) QUA360: >- Calendar Quarter. Bill recurring license charges through the end of the current calendar quarter and for full-3-month periods thereafter (or until the indicated anniversary date if earlier) BIANN360: >- Calendar Semester. Bill recurring license charges through the end of the current semester and for full-6-month periods thereafter (or until the indicated anniversary date if earlier) ANN360: >- Calendar Year. Bill recurring license charges through the end of the current calendar year and for full-12-month periods thereafter (or until the indicated anniversary date if earlier) FULL360: >- Full At Date. Bill recurring license charges for a 12-month period (or until the indicated anniversary date if earlier) taking into consideration any start dates contained in the PO. If multiple durations (in contrast to quantity) of a recurrent license charge are ordered, they are invoiced at up front rather than on an annual basis. For example, if a PO is for two years of ALC, the two years are invoiced upfront at the start date rather than year one following order completion and year two the next year. IMM360: >- Immediate. Bill is generated by Dassault Systèmes at the PO-approval date for the full amount of the order, ignoring any license start dates contained in the PO. For example, if a PO is for two years of ALC, the two years are invoiced upfront at PO approval date. MONR360: >- Rolling Month 360. Bill recurring license charges from the start date through start-date + 1 month duration (or until the indicated end date if earlier). QUAR360: >- Rolling Quarter 360. Bill recurring license charges from the start date through start-date + 3 months duration (or until the indicated end date if earlier). BIANNR360: >- Rolling Semester 360. Bill recurring license charges from the start date through start-date + 6 months duration (or until the indicated end date if earlier). ANNR360: >- Rolling Year 360. Bill recurring license charges from the start date through start-date + 12 months (or until the indicated end date if earlier). For example, if PO is for 2 years of ALC with a start date February 1st, the 2 invoicing periods will be from February 1st to January 31st. example: ANN360 opportunity_id: 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 when creating an order request. **Business rule** – When submitting a **Create Order Request**, processing of `opportunityId` depends on the Business Unit identified by `businessUnitId`: 1. **CPE** – `opportunityId` is **mandatory** in the request JSON. The value must reference a valid sales opportunity in **My Sales Pipeline**. 2. **CRE** – Any `opportunityId` value supplied in the request JSON is **ignored** by the API; it is not processed or persisted even if the partner provides one. example: A1B2-C3D4E5 license_compliance_case_id: type: string description: > **License‑Compliance Case Id** – a unique identifier generated by Dassault Systèmes to track a license‑compliance investigation or audit for a specific customer site. The Id is used by internal teams (License‑Compliance, Sales, Legal, etc.) as a reference when monitoring, documenting, and resolving potential non‑compliance issues such as unauthorized usage, under‑licensing, or misuse of software. maxLength: 14 example: '1234567890123' online_instance_seat_id: type: string description: > Deployment identifier carried in `onlineInstanceSeatId`. The same field holds one of two identifier types, depending on the product being ordered: - **Online Instance Id** - identifies a 3DEXPERIENCE platform instance deployed for the customer (for example `R1122334455667`). Used for 3DS platform products. - **Seat Id** - identifies a SolidWorks Standalone or Network licensing seat (for example `5622498`). Applies to SolidWorks products regardless of on-cloud or on-premise deployment. Partners supply a non-empty value when ordering on an existing Online Instance or Seat Id. Leave empty or omit when a new Online Instance or Seat Id will be resolved during batch processing for this request. The identifier is a combination of letters and numbers (`maxLength` 15). maxLength: 15 example: R1122334455667 waiver_duration: type: object title: Waiver by duration description: | Waiver defined by duration. properties: duration: type: integer description: | The number of months the order is eligible for free or discount. The duration is usually a number of months. **Note**: Mutually exclusive with `endDate`. example: 1 required: - duration additionalProperties: false waiver_endDate: type: object title: Waiver by endDate description: | Waiver defined by endDate. properties: endDate: type: string description: | The date untill which the order is eligible for free or discount. Format: ISO 8601 (e.g., `2025-05-30`) **Note**: Mutually exclusive with `duration`. format: date example: '2025-05-30' required: - endDate additionalProperties: false waiver: type: object description: > Waiver information for the license charge. - **Mutually Exclusive**: Only one of `duration` or `endDate` may be provided. - If neither is provided, no waiver is applied (default behavior). - If both are provided, the request/response is invalid. oneOf: - $ref: '#/components/schemas/waiver_duration' - $ref: '#/components/schemas/waiver_endDate' revenue_type_line_level: type: string description: > **Revenue Type** defines the classification of a financial transaction within enterprise licensing and sales systems. It standardizes how revenue is recognized, billed, and managed. Used in order processing, financial reporting, and compliance. enum: - BL2 - BL3 - PAC - QLC - QRC - SC2 - SC3 - SC5 - SPA - ULC - YLC - YSC x-enumDescriptions: BL2: Term Based Licenses 2 + Annual License Charge BL3: Term Based Licenses 3 + Annual License Charge PAC: Primary License Charge + Annual License Charge QLC: Quarterly License Charge QRC: Quarterly Service Charge SC2: Term Service Charge 2 + Annual Service Charge SC3: Term Service Charge 3 + Annual Service Charge SC5: Term Service Charge 5 + Annual Service Charge SPA: Primary Service Charge + Annual Service Charge ULC: Administration license charge YLC: Yearly License Charge YSC: Yearly Service Charge example: PAC start_date: type: string description: > The start date of the product or service, in ISO 8601 format (YYYY-MM-DD). format: date example: '2025-06-01' duration: type: integer description: > The duration for which the product or service is intended to be used. The unit of duration depends on the `Revenue Type`: - If `Revenue Type` is ALC (Annual License Charge), then the duration is measured in years. For example, a duration of 2 represents 2 years. - If `Revenue Type` is QLC (Quarterly License Charge), then the duration is measured in quarters. For example, a duration of 2 represents 2 quarters. example: 2 year_number: type: integer description: > This field represents the product usage `Year Number` for multi-year orders. It is used to identify the specific year of a multi-year contract. example: 1 coupon_name: type: string description: | The name of the discount coupon. maxLength: 40 example: ALMARC00000123 coupon_references: type: array description: > Collection of coupon references applied to a `licenseChargeConditions[]` line item. Coupons are submitted per line; effective scope is determined by the **coupon's revenue type** (PxC vs AxC), not only the line's `revenueType`. **Terminology** - **PxC** — Primary charges (`PLC`, `PSC`, and the primary component of combined line types such as `PAC` / `SPA`). - **AxC** — Annual or recurring charges (`ALC`, `ASC`, `YLC`, `YSC`, and the annual component of combined line types). **Business rules** - Each PO line has at most **one PxC sub-line**; AxC sub-lines exist per contract year. - `yearNumber` is **optional**. When omitted (or set to `0`), behavior depends on the coupon revenue type (see `yearNumber` below). - Use a non-zero `yearNumber` only for **AxC** coupons that target a specific contract year. - For multi-year AxC deals, submit separate coupon entries with `yearNumber: 1`, `2`, … to target individual years, or omit `yearNumber` (or use `0`) for a single coupon across all years. - When a global AxC coupon (omit/`0`) is already in effect and a later entry supplies a line-specific AxC coupon (non-zero `yearNumber`), the line-specific coupon **overwrites** the global coupon for that line only. items: type: object description: > Reference that links a coupon to a PO line. Scope depends on the coupon revenue type and on whether `yearNumber` is omitted, `0`, or a non-zero value. properties: yearNumber: $ref: '#/components/schemas/year_number' description: > Optional contract year qualifier. When omitted or set to `0`, the two forms are **equivalent**; omitting the field is the preferred practice. | `yearNumber` | PxC coupon | AxC coupon | |--------------|------------|------------| | **Omitted** or **`0`** | Applies to the PxC sub-line on the submitted PO line. There is only one PxC sub-line per PO line, so no year disambiguation is needed. | Applies globally to **all** AxC sub-lines (all contract years) in the order. | | **`1`, `2`, …** | No additional effect (only one PxC sub-line per PO line). Partners should omit this field. | Applies to the specified contract year on the relevant sub-line(s). | The value must be a non-negative integer when provided. name: $ref: '#/components/schemas/coupon_name' description: | Name of the coupon provided by Dassault Systèmes. required: - name license_charge_conditions_concise: 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. **Deployment identifier fields (`onlineInstanceSeatId`, `lineItemUuid`, `parentLineItemUuid`)** These three fields work together on each line. Evaluate `onlineInstanceSeatId` first: when it contains a concrete (non-empty) value, use the existing Online Instance or Seat Id and omit both UUID fields on that line. | Situation | `onlineInstanceSeatId` | `lineItemUuid` | `parentLineItemUuid` | |-----------|------------------------|----------------|----------------------| | Product on existing Online Instance (3DS platform) | non-empty | omit | omit | | Product on existing Seat Id (SolidWorks Standalone or Network) | non-empty | omit | omit | | New platform or base line in this request | empty or omitted | required | omit | | Linked child line (product relates to new base in this request) | empty or omitted | omit | required | **Online Instance Id resolution during batch processing (3DS platform products only)** The rules below apply when ordering **3DS platform products** (Online Instance Id) and `onlineInstanceSeatId` is empty or omitted. They do **not** apply to **Seat Id** (SolidWorks Standalone or Network) — see the field-level descriptions for Seat Id behavior. | Fields on the line | Sold-to site has at least one **Not Deployed** Online Instance Id | Sold-to site has **no** Online Instance Id, or has **only deployed** ones | |--------------------|-------------------------------------------------------------------|----------------------------------------------------------------------------| | `onlineInstanceSeatId`, `lineItemUuid`, and `parentLineItemUuid` all empty or omitted | The system **selects** a Not Deployed Online Instance Id. If the request has multiple lines, they all receive the **same** Not Deployed Online Instance Id. | The system **creates** a new Online Instance Id. If the request has multiple lines, **each line** receives its **own** new Online Instance Id. | | `onlineInstanceSeatId` empty; `lineItemUuid` provided; `parentLineItemUuid` empty or omitted | The system **selects** a Not Deployed Online Instance Id. If the request has multiple lines, they all receive the **same** Not Deployed Online Instance Id, **even when** `lineItemUuid` values differ across lines. | The system **creates** a new Online Instance Id. If the request has multiple lines with **different** `lineItemUuid` values, **each line** receives its **own** new Online Instance Id. | | `onlineInstanceSeatId` contains a non-empty Online Instance Id | The system uses the **provided** Online Instance Id (whether deployed or not deployed). | The system uses the **provided** Online Instance Id (whether deployed or not deployed). | **Linked child lines** (`parentLineItemUuid` provided, `lineItemUuid` omitted): the child line inherits the Online Instance Id resolved for its base line. It does not trigger separate Online Instance Id resolution. **Line relationship vs Product Type** `parentLineItemUuid` expresses a **line relationship**: the product on this line relates to a product on another line in the same request. The linked product may be **any** `product.type` (for example Named User, Package, Machine Based, or Add-On). Do not assume `parentLineItemUuid` applies only when `product.type` is Add-On (`A`) or Single Add-On (`AS`). **Per-line rules** - When `onlineInstanceSeatId` is empty or omitted, send exactly one of `lineItemUuid` or `parentLineItemUuid` (never both, never neither on the same line). - When `onlineInstanceSeatId` is non-empty, omit both `lineItemUuid` and `parentLineItemUuid` on that line. - `parentLineItemUuid` is only for a **child line** whose product relates to a **new** base line in the same request that is creating a new Online Instance or Seat Id. When the Online Instance or Seat Id already exists, set `onlineInstanceSeatId` on every line instead (for any product type). - `lineItemUuid` and `parentLineItemUuid` are request-scoped only; they are not stored as permanent identifiers. - `product.type` describes the catalog product and does not determine whether to use `lineItemUuid` or `parentLineItemUuid`. **Batch processing:** If neither `onlineInstanceSeatId` nor `lineItemUuid` is provided for a base or container line, batch processing fails with `API4P_SE16`. items: type: object description: > Details of a single license charge condition (also called a line item). See the array description above for how `onlineInstanceSeatId`, `lineItemUuid`, and `parentLineItemUuid` work together on each line. properties: onlineInstanceSeatId: $ref: '#/components/schemas/online_instance_seat_id' description: > Deployment identifier for the Online Instance or Seat on which the product will be licensed. The same field holds either an **Online Instance Id** (3DS platform products such as 3DEXPERIENCE) or a **Seat Id** (SolidWorks Standalone or Network products), depending on the product being ordered. * **Non-empty** - reuse an existing Online Instance or Seat Id that already belongs to the customer. - **Online Instance Id:** set when ordering on an existing 3DS platform instance (for example `R1122334455667`). The system uses the provided Online Instance Id as supplied, whether that Id is deployed or not deployed on the sold-to site. - **Seat Id:** set when ordering on an existing SolidWorks Standalone or Network seat (for example `5622498`), including additional products on a seat the customer already owns. - Multiple lines in the same request may use the same non-empty value when several products deploy on the same existing Online Instance or Seat Id. - In this case **both** `lineItemUuid` and `parentLineItemUuid` must be omitted. * **Empty** (`""` or omitted) - the Online Instance or Seat Id is resolved during batch processing for a new deployment in this request. Each line must identify its role: **Online Instance Id (3DS platform products):** - When the sold-to site has at least one **Not Deployed** Online Instance Id, the system **selects** that Id. Multiple lines in the same request receive the **same** Not Deployed Online Instance Id, regardless of whether `lineItemUuid` values differ across lines. - When the sold-to site has **no** Online Instance Id or has **only deployed** ones, the system **creates** a new Online Instance Id. Each line with a distinct `lineItemUuid` receives its **own** new Online Instance Id. - See the **Online Instance Id resolution during batch processing** table above for the full matrix. - **Container or standalone line** (a new 3DEXPERIENCE platform, or any line that does not specify `parentLineItemUuid`): **`lineItemUuid` is required.** - **Linked child line**: **`parentLineItemUuid` is required** (instead of `lineItemUuid`). It must reference the `lineItemUuid` of the base line in the same request. The child inherits the Online Instance Id resolved for the base line. **Seat Id (SolidWorks Standalone or Network):** - **Container or standalone line** (a new SolidWorks Standalone or Network base, or any line that does not specify `parentLineItemUuid`): **`lineItemUuid` is required.** When every line in the request creates its own new Seat Id, each such line must include its own `lineItemUuid`. - **Linked child line** (a product that relates to a new base line in this request): **`parentLineItemUuid` is required** (instead of `lineItemUuid`). It must reference the `lineItemUuid` of the base line in the same request. For a linked child line (`parentLineItemUuid`): on a Network Seat Id, the linked product may be any `product.type`; on a Standalone Seat Id, the linked product must be `product.type` Single Add-On (`AS`) only. - If this line is the *container or base*, the resolved Seat Id becomes the reference for any linked child lines that specify `parentLineItemUuid`. - If the line is a *linked child*, it inherits the Seat Id of the base line that created the seat. **Do not use `parentLineItemUuid` when the Online Instance or Seat Id already exists** - supply the existing value in `onlineInstanceSeatId` instead. lineItemUuid: type: string format: uuid description: > **Temporary** Universally Unique Identifier (UUID) generated by the client to uniquely identify this line item for the duration of the request. **Online Instance Id (3DS platform products):** * **Required** for container or standalone lines when `onlineInstanceSeatId` is empty or omitted - that is, any line that does not specify `parentLineItemUuid`. * When `onlineInstanceSeatId` is empty or omitted and the sold-to site has at least one **Not Deployed** Online Instance Id, the system selects that Id for all applicable lines. Different `lineItemUuid` values on multiple lines do **not** cause separate Online Instance Ids to be created. * When `onlineInstanceSeatId` is empty or omitted and the sold-to site has **no** Online Instance Id or has **only deployed** ones, each line with a distinct `lineItemUuid` receives its **own** newly created Online Instance Id. **Seat Id (SolidWorks Standalone or Network):** * **Required** when `onlineInstanceSeatId` is empty or omitted for a container or standalone line - that is, any line that does not specify `parentLineItemUuid`. * Used as the **base line identifier** for container or standalone lines. For Online Instance Id, see the resolution rules above. For Seat Id, used when the line creates a new SolidWorks Standalone or Network base. * Linked child lines in the same request reference this value via `parentLineItemUuid` (and must **not** supply `lineItemUuid`). * The UUID must be unique within the purchase order. * **Must be omitted** when `onlineInstanceSeatId` already contains a concrete identifier (ordering on an existing Online Instance or Seat Id). example: 70e3bcdc-47fc-4dbb-a0f6-87f13000e0a9 parentLineItemUuid: type: string format: uuid description: > **Temporary** Universally Unique Identifier (UUID) generated by the client that points to the `lineItemUuid` of a base line in the same request. **Scope:** use only for a **linked child line** - a line whose product **relates to** a base line in the **same request** that is creating a new Online Instance or Seat Id. For a linked child line (`parentLineItemUuid`): on a Network Seat Id, the linked product may be any `product.type`; on a Standalone Seat Id, the linked product must be `product.type` Single Add-On (`AS`) only. **Do not use** when the Online Instance or Seat Id already exists; set `onlineInstanceSeatId` to the existing value instead (for any product type on an existing SolidWorks Network or Standalone seat). **Online Instance Id inheritance (3DS platform products):** a linked child line does not trigger its own Online Instance Id resolution. It inherits the Online Instance Id assigned to the base line referenced by `parentLineItemUuid`, including when that Id was selected from a Not Deployed Online Instance Id on the sold-to site. * **Required** for linked child lines when `onlineInstanceSeatId` is empty or omitted. * Points to the `lineItemUuid` of the base line (the line that creates a new Online Instance or Seat Id in this request). * Must match a `lineItemUuid` present elsewhere in the same request. * **Must be omitted** when `onlineInstanceSeatId` already contains a concrete identifier. example: 4bd6e6f8-fac4-4145-a2ea-a2c08219c200 waiver: allOf: - $ref: '#/components/schemas/waiver' accreditationId: $ref: '#/components/schemas/accreditation_id' release: $ref: '#/components/schemas/release_name' description: > The name of the product release being ordered. This field identifies the specific version of the product to which the ordered product belongs. For example, a product might belong to a release such as "3DEXPERIENCE R2025x", "SOLIDWORKS 2025", or "V5-6R2025". product: type: object description: | This field identifies the specific product that is being ordered. properties: trigram: $ref: '#/components/schemas/product_trigram' type: $ref: '#/components/schemas/product_type' required: - trigram - type quantity: $ref: '#/components/schemas/quantity' revenueType: $ref: '#/components/schemas/revenue_type_line_level' startDate: $ref: '#/components/schemas/start_date' description: > The start date of the product or service, in ISO 8601 format (YYYY-MM-DD). **Business rule** – Effective start date resolution (evaluated during batch processing): 1. If `licenseChargeConditions[].startDate` is provided (non-empty), use it. 2. If omitted or empty (`""`), use `customerRequestedArrivalDate` when provided. 3. If CRAD is also absent, use the **PO Creation Date**. **Date coherence (batch):** The effective start date must be on or before the computed license end date. On violation, batch processing fails with `API4P_ST2`; the error `pointer` is `#/licenseChargeConditions/startDate` because that is the validated field, even when the value was derived from CRAD. **Partner guidance:** When using `COTERM_NEW` or `COTERM_ALIGN`, ensure the effective start date is not after the computed first-year end date. duration: $ref: '#/components/schemas/duration' description: > The duration for which the product or service is intended to be used. The unit of duration depends on the `Revenue Type`: - If `Revenue Type` is ALC (Annual License Charge), then the duration is measured in years. For example, a duration of 2 represents 2 years. - If `Revenue Type` is QLC (Quarterly License Charge), then the duration is measured in quarters. For example, a duration of 2 represents 2 quarters. **Business rule** - This field is mandatory for each license charge condition when the renewal information’s `anniversaryMode` is `NON_COTERM`. coupons: $ref: '#/components/schemas/coupon_references' required: - accreditationId - release - product - quantity - revenueType orderRequest_id: type: string description: System generated unique identifier of the Order Request. maxLength: 16 example: OR_000000000123 orderRequest_type: type: string description: | Action that triggered creation of the Order Request. enum: - C - S x-enumDescriptions: C: Create. Order Request was created by the Create Order Request API. S: Submit. Order Request was created by the Submit Order Request API. example: C orderRequest_status: type: string description: > Current processing state of an **Order Request**. The value reflects where the request is in the asynchronous workflow that validates the payload, stores it in the pending-request buffer, and eventually creates or submits the purchase order. enum: - OPEN - PROG - COMP - ERR x-enumDescriptions: OPEN: >- Open. Request has been received and is awaiting to be picked up by the asynchronous job. PROG: >- In Progress. Request is currently being processed by the asynchronous job. COMP: >- Completed. Request processed successfully - the purchase order was created or submitted. ERR: In Error. Request failed - an error occurred during processing. example: OPEN orderRequest_creation_datetime: type: string description: | UTC timestamp when the order request was created in the system. Format: ISO 8601 UTC (e.g., `2025-05-21T14:30:00Z`) format: date-time example: '2025-05-21T14:30:00Z' order_requests_create_data: type: array description: | List of Order Requests that were submitted by the client. items: type: object description: > **Order Request – Response payload** This object is returned to the client after a successful order request. It contains the identifier of the request, the request type (create or submit), the contact that submitted it, the current processing status, and the timestamp when the request was created. The request is stored in a pending‑request buffer and will be processed asynchronously by the batch job that eventually creates or submits the purchase order. properties: requestorContactId: $ref: '#/components/schemas/orderRequest_requestor' id: $ref: '#/components/schemas/orderRequest_id' type: $ref: '#/components/schemas/orderRequest_type' status: $ref: '#/components/schemas/orderRequest_status' creationDateTime: $ref: '#/components/schemas/orderRequest_creation_datetime' required: - requestorContactId - id - type - status - creationDateTime orderRequest_batch_error_details: type: array description: > One or more errors that occurred during asynchronous order-request processing. This field is included only when `status` is **ERR**. Refer to the [Order Creation Batch Error Catalog](#tag/Order-Creation) or [Order Submission Batch Error Catalog](#tag/Order-Submission) for the complete list of business error codes, depending on the type of order request. items: type: object description: Single error description. properties: code: type: string description: Machine-readable error identifier. example: API4P_OP1 message: type: string description: >- Human-readable description of the problem and possible corrective action. example: >- The value for the Final Customer is not found or is incorrect. Please verify the input and try again. 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. example: '#/soldToSite/id' required: - code - message example: - code: API4P_OP1 message: >- The value for the Final Customer is not found or is incorrect. Please verify the input and try again. - code: API4P_PL3 message: >- A value for was not provided or we were not able to default it. Please verify the input and try again. transaction_order_id: type: string description: >- Unique identifier of the order. Can represent a Purchase Order or a Renewal Notification. maxLength: 13 example: PO_A123456789 order_requests_get_data: type: array description: List of order requests retrieved during the get operation. items: type: object description: Details of a single order request. properties: requestorContactId: $ref: '#/components/schemas/orderRequest_requestor' id: $ref: '#/components/schemas/orderRequest_id' type: $ref: '#/components/schemas/orderRequest_type' status: $ref: '#/components/schemas/orderRequest_status' batchProcessingErrors: $ref: '#/components/schemas/orderRequest_batch_error_details' creationDateTime: $ref: '#/components/schemas/orderRequest_creation_datetime' transaction: type: - object - 'null' description: > Details of the **purchase order** associated with this request when processing completes. For a **create** order request, this is the newly created purchase order. For a **submit** order request, this is the purchase order that was submitted to the sales department. This object is only populated when `status` is **COMP**. When the order request is still **OPEN**, **PROG**, or **ERR** the field is `null`. properties: id: $ref: '#/components/schemas/transaction_order_id' required: - requestorContactId - id - type - creationDateTime 4xx_get_order_requests: type: object description: Response body returned when the get order request details request fails. properties: data: type: array description: Always an empty array in case of error responses. maxItems: 0 items: {} example: [] info: $ref: '#/components/schemas/info' error: $ref: '#/components/schemas/error' required: - data - info - error legal_entity_id: type: string description: > A unique identifier for the company. The value will be within the Legal Entity Family. minLength: 6 maxLength: 15 example: '100012345678901' legal_entity_name: type: string description: | The registered name of the company in English. maxLength: 120 example: Example Corporation localName: type: string description: | The registered name of the company in the local language. maxLength: 120 example: 示例公司 registration_identifier_type: type: string description: > Identifier type used to classify a registration identifier that uniquely identifies a Final Customer in a specific country jurisdiction or from external data provider system. The value determines the format and authority of the registration identifier (e.g., an Australian Business Number, a U.S. EIN, a Brazilian CGC, etc...). User should use this enum to indicate which registration scheme applies to the `value` field of a `registrationIdentifier` object. enum: - ABN - ACN - ANC - ANI - CGC - CID - CII - DB - DNS - EIN - FIC - FII - JCT - KOR - KPP - LTU - NIF - OGR - PAN - SRN - TIN x-enumDescriptions: ABN: Australian Business Number ACN: Company Number - Australia ANC: My Number Act - Corporations ANI: My Number Act - Individuals CGC: Comp Tax Reg Number - Brazil CID: Company Identification Number CII: CIN Number - India DB: DUNS Number (With Edit) DNS: DUNS Number (No Edit) EIN: Employer ID Number FIC: Fiscal ID - Company - Italy FII: Fiscal ID - Indiv - Italy JCT: Japan Consumption Tax KOR: Korean Registration ID KPP: KPP Number - Russia LTU: Lithuania Business ID NIF: Fiscal ID Number - Spain OGR: OGRN Number - Russia PAN: PAN Number SRN: SIREN Number - France TIN: Tax Identification Number example: PAN registration_identifier: type: object description: | The registration identifier for the customer. properties: type: $ref: '#/components/schemas/registration_identifier_type' value: type: string description: | The registration identifier value. example: AAAAA0000A required: - type - value address_location: type: object description: | Address location of the customer. properties: id: type: integer description: Unique identifier of this address‑location record. example: 1 status: type: string description: Current lifecycle status of the address location. enum: - A - I - P x-enumDescriptions: A: Active I: Inactive P: Pending example: A isDeliverable: type: boolean description: > **True** – the distributor may sell and deliver software licenses to this address location. **False** – selling and delivering to this address location are not allowed. example: true isTransactionPossible: type: boolean description: > Indicates whether a transaction is possible for the Final Customer address location. **True** – a transaction can be performed for this Final Customer address location. **False** – a transaction cannot be performed for this Final Customer address location. example: true hasPartnerActiveOrFutureLicense: type: boolean description: > **True** – the calling partner/distributor has already sold a software license to this Final Customer address location, and the license is either currently active (with or without support) or scheduled for the future. **False** – there is no active (with or without support) or scheduled‑for‑the‑future license for this address location. example: true gstin: type: string description: >- GSTIN (Goods and Services Tax Identification Number) for the address location, applicable only when the country is India and the value is available. example: 27ABCDE1234F1Z5 countryCode: type: string description: >- ISO 3166‑1 **alpha‑3** country code (three‑letter code, e.g., `USA`, `IND`, `GBR`). example: FRA countryName: type: string description: Full country name that corresponds to `countryCode`. example: France stateOrProvinceCode: type: string description: >- Code of the country subdivision such as state, province, or prefecture (e.g., “CA” for California, “NSW” for New South Wales) when applicable. example: IDF stateOrProvinceName: type: string description: >- Full name of the country subdivision (state, province, or prefecture) when applicable, corresponding to `stateOrProvinceCode`. example: Île-de-France cityName: type: string description: Name of the city. example: Paris cityLocalName: type: string description: > Localized name of the city, populated **only** when the Final Customer's country code is one of the following: - **RUS** – Russian Federation - **KOR** – Republic of Korea - **JPN** – Japan - **CHN** – China - **LTU** – Lithuania If the country is not in the above list, this field is left empty. example: Париж addressLine1: type: string description: Address Line 1 example: 123 Rue de Rivoli addressLine2: type: string description: Address Line 2 example: Apt 4B addressLine3: type: string description: Address Line 3 example: 75001 Paris addressLine4: type: string description: Address Line 4 example: France postalCode: type: string description: Postal or ZIP code for the address location. example: '75001' required: - id - status - isDeliverable - isTransactionPossible - hasPartnerActiveOrFutureLicense - countryCode - countryName - stateOrProvinceCode - stateOrProvinceName - cityName - addressLine1 - addressLine2 - addressLine3 - addressLine4 - postalCode customer_coterminous_date: type: string description: | Month‑day (MM‑DD) that serves as the renewal anchor. The value must match the `MM‑DD` pattern. pattern: ^(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$ example: 06-30 customer: type: object description: > A customer can be either an individual or a company. The object includes identification, naming, creation date, and flags that control transaction eligibility. All required fields (identifier, name, creation date, head‑office flag, transaction‑allowed flag, registration identifiers, address locations, and coterminous dates) are provided to fully describe the customer record. properties: id: $ref: '#/components/schemas/legal_entity_id' description: > A unique identifier for the Final Customer. The value will be within the Legal Entity Family. name: $ref: '#/components/schemas/legal_entity_name' description: | The registered name of the Final Customer in English. localName: $ref: '#/components/schemas/localName' description: > The registered name of the Final Customer in the local language. Localized name of the Final Customer, populated only the Final Customer’s countryCode is one of the following: - RUS - Russian Federation - KOR - Republic of Korea - JPN - Japan - CHN - China - LTU - Lithuania If the country is not in the above list, this field is left empty. creationDate: type: string description: > The date the Final Customer record was created, expressed in ISO‑8601 format (`YYYY‑MM‑DD`). This value is a calendar date without a time‑zone component. format: date example: '2025-06-01' isLegalEntity: type: boolean description: > **True** - the Final Customer is the head-office of the legal entity. **False** - the Final Customer is a branch office of a legal entity. example: true legalEntityId: type: string description: > The identifier of the legal entity (head‑office) that this Final Customer belongs to. This field is filled **only for branch office** (`isLegalEntity` = false). For a legal‑entity (head‑office) itself the field is left empty. pattern: ^(|.{6,15})$ example: '100012345678901' vatId: type: string description: > The VAT (Value Added Tax), SST (Sales & Services Tax), Consumption Tax number associated with the Final Customer. It is included only when the Final Customer is a qualified legal entity (head‑office) and a VAT (Value Added Tax), SST (Sales & Services Tax), Consumption Tax number is available. If the Final Customer has no VAT (Value Added Tax), SST (Sales & Services Tax), Consumption Tax number, the attribute is kept empty. example: FR12345678901 registrationIdentifiers: type: - array - 'null' description: > A collection of registration identifiers that uniquely identify the Final Customer in multiple country jurisdictions where Final Customer is registered or from external data provider systems (e.g., Company registration numbers, Tax number, D&B Number...) items: $ref: '#/components/schemas/registration_identifier' addressLocations: type: array description: > A collection of the Final Customer’s physical locations (addresses). Each entry describes a specific location where the Final Customer operates or receives delivery, and includes details such as street address, city, postal code, state/province/prefecture, country, related flags, status and specific registration identifiers when applicable at location (address) level. items: $ref: '#/components/schemas/address_location' coterminousDates: type: - array - 'null' description: > Dates on which the Final Customer’s licenses are **coterminous** (i.e., share the same renewal/expiry month‑day). Month‑Day (MM‑DD) coterminous serves as the recurring renewal anchor when anniversaryMode is set to First Year Coterminous Align. Each entry must be a string following the `MM‑DD` pattern (month‑day, no year). items: $ref: '#/components/schemas/customer_coterminous_date' example: - 04-29 - 12-09 - 07-20 - 03-22 required: - id - name - creationDate - isLegalEntity - legalEntityId - vatId - registrationIdentifiers - addressLocations - coterminousDates customers_search_data: type: array description: List of Final Customers retrieved during the search operation. items: $ref: '#/components/schemas/customer' firstName: type: string description: First name of the contact person. maxLength: 30 example: Jini lastName: type: string description: Last name (family name) of the contact person. maxLength: 30 example: DOE contact_email: type: string description: > E‑mail address of the contact person. This is the address to which electronic communications (order confirmations, invoices, notifications, etc.) should be sent. maxLength: 70 example: jini.doe@example.com login: type: string description: > Web login (username) that the contact uses to authenticate to the system. This value is the identifier a user enters on the login screen. maxLength: 80 example: jini.doe phoneNumber: type: string description: > Land‑line telephone number of the contact. The value is stored as free‑form text and may include any local formatting, extensions, or separators that the organization uses (e.g., “555‑1234 ext. 56”, “(02) 9876‑5432”, etc.). maxLength: 40 example: 555-1234 ext. 56 mobileNumber: type: string description: | Mobile (cellular) phone number of the contact. Stored as free‑form text; any local formatting, country codes, or separators are allowed (e.g., “+33 6 12 34 56 78”, “06‑12‑34‑56‑78”, etc.). maxLength: 40 example: +33 6 12 34 56 78 profile_id: type: string description: Unique identifier of the contact profile. maxLength: 14 example: P0000XXXXXXX roles: type: array description: List of roles granted to profile. example: - Sales Administration - Marketing items: type: string maxLength: 30 description: | Must be a string with a maximum length of 30 characters. profile: type: object description: > **Profile** – represents a specific profile that can be assigned to a contact person. A contact may have one or more profiles, each linking the contact to a particular site and providing a human‑readable name for that association. properties: id: $ref: '#/components/schemas/profile_id' name: type: string description: > Human‑readable label for the profile. This name identifies the specific role or configuration of the contact within the associated site. It may be used in UI displays and reports to distinguish among multiple profiles that a single contact may hold. maxLength: 50 example: EXAMPLE CORP siteId: $ref: '#/components/schemas/legal_entity_id' siteName: $ref: '#/components/schemas/legal_entity_name' isSOW4PMaster: type: boolean description: > Indicates whether this profile has been **mastered** (i.e., created or synchronized) from the external **Scope of Work for Partner (SOW4P)** tool. * true – the profile originates from / is managed by the SOW4P tool. * false – the profile was created internally and is not mastered from SOW4P. example: true isObsolete: type: boolean description: > Indicates whether this profile is obsolete (no longer active or valid). * true – the profile should not be used. * false – the profile is current and can be referenced. example: false roles: $ref: '#/components/schemas/roles' required: - id - siteId - siteName - isSOW4PMaster - isObsolete - roles contact: type: object description: > **Contact** – represents a person who can be reached for matters related to an order, agreement, or any other business transaction. The object contains the minimal identifying information required to reference the contact in the system. properties: id: $ref: '#/components/schemas/contact_id' prefix: type: string description: > Honorific title preceding the contact's name (e.g., "Dr", "Mr", "Mrs", "Ms"). Used for formal address in communications and documentation. maxLength: 4 enum: - DR - MR - MRS - MS x-enumDescriptions: DR: Dr MR: Mr MRS: Mrs MS: Ms example: MS firstName: type: string description: First name of the contact person. maxLength: 30 example: Jini lastName: type: string description: Last name (family name) of the contact person. maxLength: 30 example: DOE email: $ref: '#/components/schemas/contact_email' login: type: string description: > Web login (username) that the contact uses to authenticate to the system. This value is the identifier a user enters on the login screen. maxLength: 80 example: jini.doe phoneNumber: type: string description: > Land‑line telephone number of the contact. The value is stored as free‑form text and may include any local formatting, extensions, or separators that the organization uses (e.g., “555‑1234 ext. 56”, “(02) 9876‑5432”, etc.). maxLength: 40 example: 555-1234 ext. 56 mobileNumber: type: string description: > Mobile (cellular) phone number of the contact. Stored as free‑form text; any local formatting, country codes, or separators are allowed (e.g., “+33 6 12 34 56 78”, “06‑12‑34‑56‑78”, etc.). maxLength: 40 example: +33 6 12 34 56 78 creationDate: type: string description: > The date the contact record was created, expressed in ISO‑8601 format (`YYYY‑MM‑DD`). This value is a calendar date without a time‑zone component. format: date example: '2025-06-01' createdBy: type: string description: | The name of the user who created the contact record. example: DOE, John isObsolete: type: boolean description: > Indicates whether the contact record is obsolete (no longer active or valid). * true – the contact should not be used for new transactions. * false – the contact is current and can be used. example: false profiles: type: array description: > Collection of **Profile** objects that are linked to this contact. A contact can have one or more profiles, each of which ties the contact to a specific site and gives a human‑readable name for the role the contact plays at that site (e.g., "Purchasing Manager", "Site Administrator"). The array may be empty when the contact has no assigned profiles. items: $ref: '#/components/schemas/profile' required: - id - firstName - lastName - email - creationDate - createdBy - isObsolete contacts_search_data: type: array description: List of contacts retrieved during the search operation. items: $ref: '#/components/schemas/contact' prefix: type: string description: > Honorific title preceding the contact's name (e.g., "Dr", "Mr", "Mrs", "Ms"). Used for formal address in communications and documentation. maxLength: 4 enum: - DR - MR - MRS - MS x-enumDescriptions: DR: Dr MR: Mr MRS: Mrs MS: Ms example: MS contact_create_data: type: array description: List of contacts created. items: $ref: '#/components/schemas/contact' date_time_from: type: string description: > This property represents a timestamp in UTC format, following the ISO 8601 standard. All date-time values must be provided in Coordinated Universal Time (UTC). The timestamp must not be set in the future. If not provided, the system will automatically calculate it by subtracting the maximum number of days specified for the time range defined for the parent search criteria. format: date-time example: '2024-05-21T14:30:00Z' date_time_to: type: string description: > This property represents a timestamp in UTC format, following the ISO 8601 standard. All date-time values must be provided in Coordinated Universal Time (UTC). If the `from` timestamp is specified, this value must be later than `from`. If not provided, the system will automatically calculate this value by adding the maximum number of days specified for the time range defined for the parent search criteria. format: date-time example: '2024-05-22T14:30:00Z' creation_datetime_req: 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: $ref: '#/components/schemas/date_time_from' to: $ref: '#/components/schemas/date_time_to' anyOf: - required: - from - required: - to booking_datetime_req: type: object description: > Returns orders booked within a specified time range, using the `Booking` timestamp. The maximum time window allowed for the search is **7 days** (calculated time to time). The `Booking` timestamp refers to the date and time when the order was approved by the Finance Department. 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: $ref: '#/components/schemas/date_time_from' to: $ref: '#/components/schemas/date_time_to' anyOf: - required: - from - required: - to lastupdate_datetime_req: type: object description: > Indicates the timestamp of the most recent update to the order. The maximum time window allowed for the search is **3 days** (calculated time to time). This field is automatically set to the current timestamp whenever the order is modified. 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: $ref: '#/components/schemas/date_time_from' to: $ref: '#/components/schemas/date_time_to' anyOf: - required: - from - required: - to 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 billto_po_references_req: type: array minItems: 1 description: List of partner order references. example: - '390830' items: type: string maxLength: 60 description: | Must be a string with a maximum length of 60 characters. transaction_type: type: string description: | Order type (one of: `PO`, `RN`). enum: - PO - RN x-enumDescriptions: PO: Purchase Order RN: Renewal Notification example: PO order_processing_status: type: string description: Current processing status of the order. enum: - CAN - RECY - CRFU - CCD - DFT - FRST - HOL - QUOT - DFTV - APP - RFD - WCCO - WCC - QUOR - APPS - RJTF - RJTC - RPQT - RJTV - RJVS - ECM - PRC - STSV - STVS x-enumDescriptions: CAN: Cancelled. The order has been cancelled and is no longer valid. RECY: >- Claim to be Managed. The order is being claimed by a different entity for management. CRFU: >- Consent Refused. The Final Customer has refused to provide consent for the order. CCD: Discarded. The order has been discarded and is no longer valid. DFT: Draft. The order is in draft mode and has not been submitted. FRST: >- Forecast. Status for renewal which are created more than 90 days before their start date, renewal is kept in Forecast status until system applies the price increase, then moved to Draft or Quote. HOL: >- On Hold. Users can put a renewal on-hold temporarily to prevent automatic finalization. QUOT: Quote. The order is in the quoting phase and has not been submitted. DFTV: >- Draft by VAR. The order is in draft mode and has been created by a Value Added Reseller (VAR). APP: >- Finance Approved. The order has been approved by the Finance Department. RFD: Finance Refused. The order has been refused by the Finance Department. WCCO: Pending Consent. The order is waiting for Final Customer consent. WCC: >- Pending Customer Consent. The order is waiting for Final Customer consent and has not been submitted. QUOR: Quote Rejected. The quote for the order has been rejected. APPS: Sales Approved. The order has been approved by the Sales Department. RJTF: >- Sent Back to Finance. The order has been sent back to the Finance Department for further processing. RJTC: >- Sent Back to Sales. The order has been sent back to the Sales Department for further processing. RPQT: >- Sent Back to Quote. The order has been sent back to the quoting phase for further review or modification. RJTV: >- Sent Back to VAR. The order has been sent back to the Value Added Reseller (VAR) for further processing. RJVS: >- Sent Back to VAR Central Admin. The order has been sent back to the VAR central administration for further processing. ECM: >- Sent to Credit Manager. The order has been sent to the credit manager for further processing. PRC: >- Sent to DSx.Finance. The order has been sent to the Finance Department for further processing. STSV: >- Submitted to Sales. The order has been submitted to the Sales Department for further processing. STVS: >- Submitted to VAR Central Admin. The order has been submitted to the VAR central administration for further processing. DFTE: >- Draft by Partner. Legacy status retained for backward compatibility. No longer assigned to new Purchase Orders but may appear in existing records. example: APPS transaction: type: object description: Transactional details of the order. properties: id: $ref: '#/components/schemas/transaction_order_id' type: $ref: '#/components/schemas/transaction_type' status: $ref: '#/components/schemas/order_processing_status' description: type: string description: >- Short description given to the Purchase Order / Renewal Notification. maxLength: 30 example: XYZ Company Order 50 products local_time_zone: type: string description: | Time zone abbreviation used by the sales business unit. enum: - ACST - AEST - AKST - ASK - AST - AWST - BRI - CET - CHN - CST - EET - EST - ESTA - GMT - HAW - HOB - HST - IST - JST - MSK - MST - MSTA - NST - PST - SYD - UTC - VAL - WET x-enumDescriptions: ACST: Australian Central Standard Time AEST: Australian Eastern Standard Time AKST: Alaska Time (US) ASK: Alaska Time AST: Atlantic Time (Canada) AWST: Australian Western Standard Time BRI: Brisbane Time CET: Central European Time CHN: China Standard Time CST: Central Time (US) EET: Eastern European Time EST: Eastern Time (US) ESTA: Indiana GMT: Greenwich Mean Time HAW: Hawaii Time HOB: Hobart Time HST: Hawaiian Time IST: Indian Time JST: Japan Standard Time MSK: Moscow Time MST: Mountain Time (US) MSTA: Arizona Time NST: Newfoundland Time (Canada) PST: Pacific Time (US) SYD: Sydney Time UTC: Universal Time Coordinated, Zulu VAL: Vladivostok Time WET: Western European Time example: CET business_unit: type: object description: Details of the sales business unit. properties: id: type: string description: Unique identifier of the sales business unit. minLength: 5 maxLength: 5 example: BU001 name: type: string description: Name of the sales business unit. maxLength: 25 example: Corporate Sales Unit A localTimezone: $ref: '#/components/schemas/local_time_zone' required: - id - name - localTimezone legal_entity: type: object description: > A **Legal Entity** represents a registered establishment (association, corporation, partnership, proprietorship, trust, or individual) that has legal standing under the law. It can enter into contracts, assume obligations, incur and pay debts, sue and be sued, and is responsible for its own actions. Legal entities are registered with the appropriate authorities of a country and are the names used in communications with local authorities, other companies, invoicing, tax, and registration. A legal entity may consist of one or multiple establishments/sites and serves as the Head Office of the Family Structure in DSx Client. properties: id: $ref: '#/components/schemas/legal_entity_id' name: $ref: '#/components/schemas/legal_entity_name' localName: type: string description: | The registered name of the company in the local language. maxLength: 120 example: 示例公司 locationId: type: integer description: | A unique identifier representing the company's location. Must be an integer between 1 and 999. minimum: 1 maximum: 999 example: 2 required: - id - name - locationId creation_datetime: type: string description: | UTC timestamp when the order was created in the system. Format: ISO 8601 UTC (e.g., `2025-05-21T14:30:00Z`) format: date-time example: '2025-05-21T14:30:00Z' ds_received_po_date: type: string description: >- Date when the order was received by Dassault Systèmes, in ISO 8601 format (YYYY-MM-DD). format: date example: '2025-05-21' booking_datetime: type: string description: | UTC timestamp when the order was approved by the Finance Department. Format: ISO 8601 UTC (e.g., `2025-05-30T14:30:00Z`) format: date-time example: '2025-05-29T18:00:00Z' lastupdate_datetime: type: string description: > UTC timestamp of the most recent update to the order. This timestamp indicates the exact moment when the order was last modified. It is crucial for tracking changes and ensuring data consistency. Format: ISO 8601 UTC (e.g., `2025-05-21T14:40:00Z`) format: date-time example: '2025-05-21T14:40:00Z' online_consent_status: type: string description: | Status of the online consent request sent to the designated contact. enum: - A - T - X - 'N' - R - S x-enumDescriptions: A: >- Accepted. The online consent request has been successfully accepted by the designated contact. T: >- Expired. The online consent request has expired and is no longer valid. X: >- Not Applicable. The online consent request is not applicable to the current situation or context. 'N': >- Not Requested. The online consent request has not been sent to the designated contact. R: >- Refused. The online consent request has been refused by the designated contact. S: >- Requested. The online consent request has been sent to the designated contact, but the status is pending. example: A billto_sales_representative: type: string description: Name of the sales representative person from the **Bill To** site. example: DOE, Jane orders_search_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: description: >- Legal entity to which Dassault Systèmes will issue the invoice (Bill To). $ref: '#/components/schemas/legal_entity' soldToSite: description: >- Legal entity of the company that is the Final Customer of Dassault Systèmes products (Sold To). $ref: '#/components/schemas/legal_entity' creationDateTime: $ref: '#/components/schemas/creation_datetime' dsReceivedPoDate: $ref: '#/components/schemas/ds_received_po_date' bookingDateTime: $ref: '#/components/schemas/booking_datetime' lastUpdateDateTime: $ref: '#/components/schemas/lastupdate_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' required: - transaction - businessUnit - billToSite - soldToSite - creationDateTime - currency name: type: string description: | Descriptive name of the agreement type. maxLength: 100 example: 01. CLOSA (V13.2) agreement: type: object description: > Contains details about the license agreement associated with the licenses being ordered in the Purchase Order (PO). properties: type: description: | Type or classification of the agreement. $ref: '#/components/schemas/name' 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 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: - NEW - RENW - UPGR - EVAL - STOI - SUSP - TOS - VARU - CCHN - CVAR - MGDS - TRDS - EPP - MIGR - TRMG - IDWS - INPD - INWD - TRAN - UPG2 - MEX2 - MEXC - REIN - PUSE - SPOR - STOP - STPU - SREI - TREI - TRPU - TRWS x-enumDescriptions: NEW: >- New. A fresh order that does not involve any migration, renewal, or upgrade. RENW: Renewal. Extending an existing license. UPGR: >- Migration - Standard. A standard replacement or upgrade of existing licenses. EVAL: >- Evaluation License. License issued temporarily for evaluation purposes. STOI: >- Stop - Transform. Discontinuing an existing license with a shift to a transformed model or product. SUSP: Suspension. Temporarily halting the license or support services. TOS: Termination Of Support. Ending the support of a product or service. VARU: VAR Use. Orders associated with Value-Added Resellers (VAR). CCHN: >- Change of Channel. Changing Final Customer coverage from direct to indirect or vice versa. CVAR: >- Change of VAR. Changing the Value-Added Reseller (VAR) for an existing order. MGDS: >- DS Brand -> DS & Migration. Migrating from DS Brand to DS with migration services. TRDS: >- DS Brand -> DS OTC Platform. Transitioning from DS Brand to DS OTC Platform. EPP: >- TEP Training. A training order covered under **Training Experience Program** that provides participants with a structured, hands‑on learning experience covering the features and best‑practice use of the product portfolio. MIGR: IBM -> DS. Transitioning from IBM to DS. TRMG: >- IBM -> DS & Migration. Transitioning from IBM to DS with migration services. IDWS: >- IBM -> DS without Support. Transitioning from IBM to DS without support. INPD: IBM NAL Parallel Use -> DS. Parallel use of IBM NAL with DS. INWD: >- IBM NAL without Support -> DS. Transitioning from IBM NAL to DS without support. TRAN: >- Intercompany Transfer. Transferring licenses between different companies. UPG2: Migration - Non Standard. Non-standard migration processes. MEX2: >- Module Exchange - Non Standard. Non-standard module exchange processes. MEXC: Module Exchange - Standard. Standard module exchange processes. REIN: One Time Fee. Fee charged for a one-time service or transaction. PUSE: >- Parallel Use Extension. Extending the parallel-use period for a license. SPOR: Special Order. New licenses with specific administrative requests. STOP: Stop. Discontinuing an existing license. STPU: >- Stop & Parallel Use. Discontinuing an existing license with parallel use. SREI: >- Suspension Reinstatement. Reinstating a previously suspended license or support services. TREI: TOS Reinstatement. Reinstatement of termination‑of‑support status TRPU: Transfer Parallel Use. Transferring licenses with parallel-use rights. TRWS: >- Transfer without Support. Transferring licenses without accompanying support. example: STOI sub_order_type: type: string description: Sub Order Type enum: - CCHN - CVAR - EPP - EVAL - TRAN - NEW - REIN - RNEW - STPL - STPT - STPC - STPU - SPWL - SUSP - SREI - TREI - TOS - TRWS - INIT - VARU - BSU x-enumDescriptions: CCHN: >- Change of Channel. Changing customer coverage from direct to indirect or vice versa. CVAR: >- Change of VAR. Changing the Value-Added Reseller (VAR) for an existing order. EPP: >- TEP Training. A training order covered under **Training Experience Program** that provides participants with a structured, hands‑on learning experience covering the features and best‑practice use of the product portfolio. EVAL: >- Evaluation License. License issued temporarily for evaluation purposes. TRAN: Transfer License. Transferring licenses between different companies. NEW: >- New License. As a sub-order type it can be related to a new license, migration or transfer. REIN: One Time Fee. Fee charged for a one-time service or transaction. RNEW: License Renewal. Extending an existing license. STPL: >- Stop (NO Parallel Use). Discontinuing an existing license with no parallel use. STPT: >- Stop - Transform. Discontinuing an existing license with a shift to a transformed model or product. STPC: Stop License. Discontinuing an existing license. STPU: Stop of PU. Discontinuing an existing parallel-use license. SPWL: >- Stop & Parallel use. Discontinuing an existing license while retaining parallel‑use rights. SUSP: Suspension. Temporarily halting the license or support services. SREI: >- Suspension Reinstatement. Reinstating a previously suspended license or support services. TREI: TOS Reinstatement. Reinstating termination-of-support. TOS: Termination Of Support. Ending the support of a product or service. TRWS: Transfer without Support. Transferring licenses without support. INIT: >- Initial Value. The initial monetary value shown for a discarded PO or renewal order. VARU: VAR Use. Orders associated with Value-Added Resellers (VAR). BSU: >- Back Service Fee. One-time fee applied for the reinstatement of support, covering the back period between the Termination of Support (ToS) date and the reinstatement date—billing unpaid license charges (ALC/YLC) as a single line item. example: NEW distributor_net_amount: type: number format: float description: > The actual amount payable by the Bill To Site for the selected product. This field represents the total cost of the product or service, including any applicable fees, or discounts. **Note:** Numeric values may include additional trailing decimal places due to serialization behavior of the underlying platform. The business-defined precision for this field is 2 decimal places. Digits beyond this precision are non-significant and should be ignored. example: 1930 distributor_annual_amount: type: number format: float description: > The total amount payable by the Bill To Site for the full year. This field represents the annual cost of the product or service, taking into account any usage periods that are not a full year. Note that there may be a difference between `Distributor Net Amount` and `Distributor Annual Amount` when the product is not purchased for a full year of usage. **Note:** Numeric values may include additional trailing decimal places due to serialization behavior of the underlying platform. The business-defined precision for this field is 2 decimal places. Digits beyond this precision are non-significant and should be ignored. example: 1930 distributor_discount_percentage: type: number format: float description: > The discount percentage applicable to the `Total List Price`. This field represents the percentage reduction in the total list price, as a decimal value (e.g. 39.50000000000000 represents 39.5%). **Note:** Numeric values may include additional trailing decimal places due to serialization behavior of the underlying platform. The business-defined precision for this field is 10 decimal places. Digits beyond this precision are non-significant and should be ignored. example: 39.5 distributor_max_margin_percentage: type: number format: float description: > The percentage difference between the discount price offered by Dassault Systèmes and the Partner Bill To Site. This field represents the margin earned by the Partner Bill To Site, calculated as a percentage of the discount price. This field is pre-filled according to the percentage value set inside the Distributor Discount Model section of the GVA Agreement. Additionally, note that this field is related to `Distributor Discount Percentage`, which represents the percentage reduction in the `Total List Price`. **Note:** Numeric values may include additional trailing decimal places due to serialization behavior of the underlying platform. The business-defined precision for this field is 10 decimal places. Digits beyond this precision are non-significant and should be ignored. example: 1.5 customer_max_net_amount: type: number format: float description: > The actual amount payable by the Final Customer Site for the selected product. This field represents the maximum net amount that the Final Customer Site is responsible for paying, taking into account any applicable discounts or fees. **Note:** Numeric values may include additional trailing decimal places due to serialization behavior of the underlying platform. The business-defined precision for this field is 2 decimal places. Digits beyond this precision are non-significant and should be ignored. example: 1958.95 customer_max_annual_amount: type: number format: float description: > The total amount payable by the Final Customer Site for the full year. This field represents the annual cost of the product or service, taking into account any usage periods that are not a full year. Note that there may be a difference between `Customer Maximum Net Amount` and `Customer Maximum Annual Amount` when the product is not purchased for a full year of usage. **Note:** Numeric values may include additional trailing decimal places due to serialization behavior of the underlying platform. The business-defined precision for this field is 2 decimal places. Digits beyond this precision are non-significant and should be ignored. example: 1958.95 customer_min_discount_percentage: type: number format: float description: > The minimum discount percentage that the Partner Bill To Site offers to the Final Customer for the selected product. This field represents the lowest percentage discount that the Partner Bill To Site is willing to offer to the Final Customer, as a decimal value (e.g. 13.97000000000000 represents 13.97%).. **Note:** Numeric values may include additional trailing decimal places due to serialization behavior of the underlying platform. The business-defined precision for this field is 10 decimal places. Digits beyond this precision are non-significant and should be ignored. example: 13.97 end_date: type: string description: | The end date of the product or service, in ISO 8601 format (YYYY-MM-DD). example: '2026-05-31' coupon_detail: type: object description: | Details of the discount coupon applied to the final price. properties: name: $ref: '#/components/schemas/coupon_name' discountPercentage: type: number format: float description: > The discount percentage that will be applied to final price. **Note:** Numeric values may include additional trailing decimal places due to serialization behavior of the underlying platform. The business-defined precision for this field is 10 decimal places. Digits beyond this precision are non-significant and should be ignored. example: 10 inflation_exception: type: string description: | Any exception applied while calculating the inflated amount. enum: - CAPL - NPI - NCLP x-enumDescriptions: CAPL: Capping to Price List NPI: No Price Increase NCLP: No Cap. Lower than Price List NPIE: No Exception CDSC: Capping Discarded CUPI: Cumulated Price Increase example: CAPL order_sub_line: type: object description: | Details of License Charge Breakdown. It is also interchangably called as Sub-Line Item. properties: sequenceNumber: type: integer description: > The sequence number used to identify the license charge breakdown item. It is an integer autogenerated by system, between 1 and 999. minimum: 1 maximum: 999 example: 1 installedBaseNumber: $ref: '#/components/schemas/installed_base_number' subOrderType: $ref: '#/components/schemas/sub_order_type' revenueType: $ref: '#/components/schemas/order_revenue_type' portfolio: $ref: '#/components/schemas/portfolio_name' release: $ref: '#/components/schemas/release_name' description: > The name of the product release being ordered. This field identifies the specific version of the product to which the ordered product belongs. For example, a product might belong to a release such as "3DEXPERIENCE R2025x", "SOLIDWORKS 2025", or "V5-6R2025". product: type: object description: | This field identifies the specific product that is being ordered. properties: trigram: $ref: '#/components/schemas/product_trigram' type: $ref: '#/components/schemas/product_type' number: $ref: '#/components/schemas/product_number' description: | The product number. name: $ref: '#/components/schemas/product_name' dsOffering: $ref: '#/components/schemas/ds_offering' quantity: $ref: '#/components/schemas/quantity' unitListPrice: type: number format: float description: > The price listed by the Finance Department for the product being ordered. This field represents the standard price of a single unit of the product, as approved by the Finance Department. example: 1000 totalListPrice: type: number format: float description: > The total price of the product licenses, calculated by multiplying the `Unit List Price` and the `Quantity`. This field represents the total cost of the product licenses, taking into account the number of units purchased. example: 2000 distributorNetAmount: $ref: '#/components/schemas/distributor_net_amount' distributorAnnualAmount: $ref: '#/components/schemas/distributor_annual_amount' distributorDiscountPercentage: $ref: '#/components/schemas/distributor_discount_percentage' distributorMaximumMarginPercentage: $ref: '#/components/schemas/distributor_max_margin_percentage' customerMaximumNetAmount: $ref: '#/components/schemas/customer_max_net_amount' customerMaximumAnnualAmount: $ref: '#/components/schemas/customer_max_annual_amount' customerMinimumDiscountPercentage: $ref: '#/components/schemas/customer_min_discount_percentage' startDate: $ref: '#/components/schemas/start_date' endDate: $ref: '#/components/schemas/end_date' duration: $ref: '#/components/schemas/duration' calculatedStartDate: type: string description: > This field is automatically calculated by the system. Format: ISO 8601 format (YYYY-MM-DD). It is based on one of the following dates: - The user-entered `Start Date` - The `CRAD (Customer Requested Arrival Date)` - The `Finance Approved` date of the order format: date example: '2025-06-01' calculatedEndDate: type: string description: > This field is automatically calculated by the system. Format: ISO 8601 format (YYYY-MM-DD). It is based on one of the following values: - `First Year Co-Terminus`: The end date of the first year of the contract. - End date of the Duration calculated from 'calculatedStartDate' or entered by the user format: date example: '2026-06-30' yearNumber: $ref: '#/components/schemas/year_number' coupon: $ref: '#/components/schemas/coupon_detail' inflation: type: object description: > Details about the inflation rate applied to the price of the product. The inflation occurs when it is the case of product renewals. properties: date: type: string description: | The date since when the inflation rate is applicable. This date should be in the format `YYYY-MM-DD`. format: date example: '2025-07-01' ratio: type: number format: float description: > The multiplication factor applied to the price. For example, a ratio of `1.04` indicates a 4% price increase applied. **Note:** Numeric values may include additional trailing decimal places due to serialization behavior of the underlying platform. The business-defined precision for this field is 7 decimal places. Digits beyond this precision are non-significant and should be ignored. example: 1.04 exception: $ref: '#/components/schemas/inflation_exception' order_line: type: object description: | Details of License Charge Condition. This object is also interchangably called as Line Item. properties: sequenceNumber: type: integer description: | The sequence number used to identify the line item. It is an integer autogenerated by system, between 1 and 999. minimum: 1 maximum: 999 example: 1 lineGroup: type: string description: > Identifier for the license charge condition. This is used to group together the Installed Base sub-lines. maxLength: 15 example: SBL0001234567 onlineInstanceSeatId: $ref: '#/components/schemas/online_instance_seat_id' orderType: $ref: '#/components/schemas/order_type' usageScope: type: string description: > Defines the geographical or territorial scope in which the product can be used, as specified in the associated agreement details. This may refer to a region (e.g., GEO) or a specific country. maxLength: 80 example: GEO EMEA promotion: type: object description: > Promotion information. This object contains information about the promotion applied to the order. The promotion object contains information about the promotion, including its name, Id, and combination of one or more products. properties: id: type: string description: > Unique identifier of the promotion. The Id is a 15-character string that starts with "PAO" followed by a sequence of numbers. The numbers are generated by the system and are used to identify the promotion. The Id is unique within the instance and is used to track and manage the promotion. maxLength: 10 example: PAO0000111 name: type: string description: > Name of the promotion. The name is a human-readable description of the promotion. The name is used to identify the promotion and to display it to the user. maxLength: 100 example: 3DEXPERIENCE for small and medium business combination: type: string description: > The human-readable name of the combination that represents specific grouping of products. The combination is usually one or more products from one or multiple portfolios. A combination can be thought of as a "bundle" of products that are sold together, or as a "package" of products that are related in some way. maxLength: 100 example: Collaborative Design & Engineering Learning @Home waiver: allOf: - $ref: '#/components/schemas/waiver' licenseChargeBreakdown: type: array items: $ref: '#/components/schemas/order_sub_line' order_get_data: type: array description: List of orders retrieved during the get Order details operation. items: type: object description: Summary information for a single order. properties: transaction: $ref: '#/components/schemas/transaction' businessUnit: $ref: '#/components/schemas/business_unit' billToSite: description: >- Legal entity to which Dassault Systèmes will issue the invoice (Bill To). $ref: '#/components/schemas/legal_entity' soldToSite: description: >- Legal entity of the company that is the Final Customer of Dassault Systèmes products (Sold To). $ref: '#/components/schemas/legal_entity' agreement: $ref: '#/components/schemas/agreement' 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`. example: DOE, John creationDateTime: $ref: '#/components/schemas/creation_datetime' dsReceivedPoDate: $ref: '#/components/schemas/ds_received_po_date' bookingDateTime: $ref: '#/components/schemas/booking_datetime' lastUpdateDateTime: $ref: '#/components/schemas/lastupdate_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: $ref: '#/components/schemas/customer_requested_arrival_date' 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' opportunityId: $ref: '#/components/schemas/opportunity_id' 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 4xx_get_orders: type: object description: Response body returned when the order details request fails. properties: data: type: array description: Always an empty array in case of error responses. maxItems: 0 items: {} example: [] info: $ref: '#/components/schemas/info' error: $ref: '#/components/schemas/error' required: - data - info - error deployment_type: type: string description: | Solution deployment environment. enum: - '1' - '2' - '4' - '5' x-enumDescriptions: '1': > Public Cloud. Solution delivered on the Dassault Systèmes Public Cloud platform (SaaS offering hosted and managed by Dassault Systèmes). '2': > Private Cloud. Solution hosted in a cloud environment dedicated to a single customer, providing exclusive resources and optional security/configuration controls. '4': > On‑Premise. Solution installed and run in the customer’s own data‑center (bare‑metal or virtual machines), giving full control and maximum security. '5': > Mixed. A hybrid deployment that combines cloud (public or private) and on‑premise components within the same offering. accreditations_search_data: type: array description: List of accreditations retrieved during the search operation. items: type: object description: Summary information for an accreditation query. properties: id: type: string examples: - IPE00034863 - PRTF119 name: type: string examples: - 04-Continuous Product Development - Public Cloud 3D Design accreditationType: $ref: '#/components/schemas/accreditation_type' deploymentType: $ref: '#/components/schemas/deployment_type' industrySolutionExperience: description: > A Dassault Systèmes industry-specific offering designed to help companies innovate and achieve their performance objectives by addressing specific business challenges, Delivered through the 3DEXPERIENCE platform, an Industry Solution Experience is comprised of Industry Process Experiences. type: object properties: id: type: string example: ISE00004588 name: type: string example: Engineered to Fly solutionRelease: description: > A Release is a group of iterations that results in the completion of a valuable deliverable on the project. type: object properties: id: type: string example: REL00000051 name: type: string example: 3DEXPERIENCE R2024x industry: description: > Industry is a wide business industrial domain, marketed by Dassault Systèmes as an industry. type: object properties: id: type: string example: IND000005 name: type: string example: Aerospace & Defense required: - id - name - accreditationType responses: 200_price-lists_search: description: OK headers: X-RateLimit-Limit: description: Total allowed quota in the current window. schema: type: integer minimum: 0 example: 100 X-RateLimit-Remaining: description: Remaining quota in the current window. schema: type: integer minimum: 0 example: 42 X-RateLimit-Reset: description: Number of seconds until the quota window resets. schema: type: integer minimum: 0 example: 27 content: application/json: schema: type: object description: >- Response body returned upon a successful price list search request. properties: data: $ref: '#/components/schemas/price-lists_search_data' info: $ref: '#/components/schemas/info' error: $ref: '#/components/schemas/error' required: - info - data examples: successful_priceLists_search: summary: Successful price list search description: >- Example of a successful price list search request that returns multiple price lists for different countries. value: data: - countryCode: BLZ countryName: Belize priceLists: - id: 9 name: LATAM South Price List currency: USD hasFuturePriceList: false effectiveDate: null - countryCode: CAN countryName: Canada priceLists: - id: 3 name: Canada Price List currency: CAD hasFuturePriceList: false effectiveDate: '2025-09-12' - countryCode: HND countryName: Honduras priceLists: - id: 9 name: LATAM South Price List currency: USD hasFuturePriceList: false effectiveDate: null info: success: true statusCode: 200 estimatedSearchCount: 3 successful_priceLists_search_noResult: summary: Successful price list search with no results description: >- Example of a successful price list search request that returns no results, indicating no matching price lists. value: data: [] info: success: true statusCode: 200 estimatedSearchCount: 0 401_response: 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_response: 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_response: description: Too many Requests headers: X-RateLimit-Limit: description: Total allowed quota in the current window. schema: type: integer minimum: 0 example: 100 X-RateLimit-Remaining: description: Remaining quota in the current window. schema: type: integer minimum: 0 example: 42 X-RateLimit-Reset: description: Number of seconds until the quota window resets. schema: type: integer minimum: 0 example: 27 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 500_response: description: Internal Server Error headers: X-RateLimit-Limit: description: Total allowed quota in the current window. schema: type: integer minimum: 0 example: 100 X-RateLimit-Remaining: description: Remaining quota in the current window. schema: type: integer minimum: 0 example: 42 X-RateLimit-Reset: description: Number of seconds until the quota window resets. schema: type: integer minimum: 0 example: 27 content: application/json: schema: type: string examples: Internal Server Error: summary: Internal Server Error description: Internal Server Error value: >- 500 Internal Server Error The server encountered an unexpected condition which prevented it from fulfilling the request 200_post_apikeys: description: Successfully generated API key headers: X-RateLimit-Limit: description: Total allowed quota in the current window. schema: type: integer minimum: 0 example: 100 X-RateLimit-Remaining: description: Remaining quota in the current window. schema: type: integer minimum: 0 example: 42 X-RateLimit-Reset: description: Number of seconds until the quota window resets. schema: type: integer minimum: 0 example: 27 content: application/json: schema: type: object properties: hashed_key: type: string description: Generated hash of the API key (60 characters) example: $2b$12$8tcF4MTIDcup3WEo8fFSieGIYEnp/DTLHSTivUCcW2II/VVwRI9Qm minLength: 60 maxLength: 60 api_key: type: string description: Plain API key (64 characters) example: >- 5839bcfabb9e0d20f889f366dbfbbe2973c152cfbe91fae728a9f7e662ce1a2d minLength: 64 maxLength: 64 required: - hashed_key - api_key 200_post_product_price_list: description: OK headers: X-RateLimit-Limit: description: Total allowed quota in the current window. schema: type: integer minimum: 0 example: 100 X-RateLimit-Remaining: description: Remaining quota in the current window. schema: type: integer minimum: 0 example: 42 X-RateLimit-Reset: description: Number of seconds until the quota window resets. schema: type: integer minimum: 0 example: 27 content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/product_price_list_data' info: $ref: '#/components/schemas/info' required: - data - info examples: exampleProductNoFYD: summary: Product without First Year Discount value: data: - number: 5CC-MD2 prices: - revenueType: PLC dsListPrice: 21770 distributorDiscountPercentage: 25 distributorPrice: 16327.5 - revenueType: ALC dsListPrice: 21770 distributorDiscountPercentage: 25 distributorPrice: 16327.5 info: success: true statusCode: 200 estimatedSearchCount: 1 exampleProductWithFYD: summary: Product with First Year Discount value: data: - number: 5CP-CPXW-O prices: - revenueType: ALC dsListPrice: 900 distributorDiscountPercentage: 40.03 distributorPrice: 539.73 firstYearDiscountPercentage: 45 firstYearDiscountPrice: 495 - revenueType: YLC dsListPrice: 900 distributorDiscountPercentage: 40.03 distributorPrice: 539.73 firstYearDiscountPercentage: 45 firstYearDiscountPrice: 495 info: success: true statusCode: 200 estimatedSearchCount: 1 400_post_product_price_list: description: Bad Request headers: X-RateLimit-Limit: description: Total allowed quota in the current window. schema: type: integer minimum: 0 example: 100 X-RateLimit-Remaining: description: Remaining quota in the current window. schema: type: integer minimum: 0 example: 42 X-RateLimit-Reset: description: Number of seconds until the quota window resets. schema: type: integer minimum: 0 example: 27 content: application/json: schema: $ref: '#/components/schemas/4xx_post_product_price_list' examples: failedProductPriceList_BadRequest: summary: Example response for missing required parameter description: > This example shows the response returned when accreditation type is missing in the request body. value: data: [] info: success: false statusCode: 400 error: - type: errors:3dx:invalidRequest title: Bad Request errors: - detail: Invalid Portfolio accreditationType pointer: '#/accreditationType' 404_post_product_price_list: description: Not Found headers: X-RateLimit-Limit: description: Total allowed quota in the current window. schema: type: integer minimum: 0 example: 100 X-RateLimit-Remaining: description: Remaining quota in the current window. schema: type: integer minimum: 0 example: 42 X-RateLimit-Reset: description: Number of seconds until the quota window resets. schema: type: integer minimum: 0 example: 27 content: application/json: schema: $ref: '#/components/schemas/4xx_post_product_price_list' examples: failedProductPriceList_NotFound: summary: Example response for a resource not found description: > This example shows the response returned when no information exists for the given portfolio / IPE. value: data: [] info: success: false statusCode: 404 error: - type: errors:3dx:resourceNotFound title: Not Found errors: - detail: Invalid accreditationID pointer: '#/accreditationId' 200_post_portfolio_information: description: OK headers: X-RateLimit-Limit: description: Total allowed quota in the current window. schema: type: integer minimum: 0 example: 100 X-RateLimit-Remaining: description: Remaining quota in the current window. schema: type: integer minimum: 0 example: 42 X-RateLimit-Reset: description: Number of seconds until the quota window resets. schema: type: integer minimum: 0 example: 27 content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/portfolio_information_data' info: $ref: '#/components/schemas/info' required: - data - info examples: packageExample: summary: Example response for a Package value: data: - number: 6NB-PCS-OC trigram: PCS-OC type: P defaultSupportLevel: A licensingScheme: NAM dsOffering: ONL remoteAccess: true extendedEnterpriseUser: true release: 3DEXPERIENCE R2025x name: Collaborative Business & Industry Innovator prerequisite: '' availabilityStatus: 1 portfolio: Public Cloud Governance/Lifecycle - number: 6NB-PCS-OC trigram: PCS-OC type: P defaultSupportLevel: A licensingScheme: NAM dsOffering: ONL remoteAccess: true extendedEnterpriseUser: true release: 3DEXPERIENCE R2023x name: Collaborative Business & Industry Innovator prerequisite: '' availabilityStatus: 1 portfolio: Public Cloud Governance/Lifecycle info: success: true statusCode: 200 estimatedSearchCount: 1 migrationPathExample: summary: Example response for a Migration Path value: data: - number: 6OM-MGR08344 trigram: MGR08344 type: M defaultSupportLevel: A licensingScheme: NA dsOffering: LIC remoteAccess: false extendedEnterpriseUser: false release: '' name: CDX --> PCS-OC+UE5-OC prerequisite: '' portfolio: Public Cloud Governance/Lifecycle info: success: true statusCode: 200 estimatedSearchCount: 1 400_post_portfolio_information: description: Bad Request headers: X-RateLimit-Limit: description: Total allowed quota in the current window. schema: type: integer minimum: 0 example: 100 X-RateLimit-Remaining: description: Remaining quota in the current window. schema: type: integer minimum: 0 example: 42 X-RateLimit-Reset: description: Number of seconds until the quota window resets. schema: type: integer minimum: 0 example: 27 content: application/json: schema: $ref: '#/components/schemas/4xx_post_portfolio_information' examples: failedProductInfo_BadRequest: summary: Example response for missing required parameter description: > This example shows the response returned when accreditation type is missing in the request body. value: data: [] info: success: false statusCode: 400 error: - type: errors:3dx:invalidRequest title: Bad Request errors: - detail: Invalid Portfolio accreditationType pointer: '#/accreditationType' 404_post_portfolio_information: description: Not Found headers: X-RateLimit-Limit: description: Total allowed quota in the current window. schema: type: integer minimum: 0 example: 100 X-RateLimit-Remaining: description: Remaining quota in the current window. schema: type: integer minimum: 0 example: 42 X-RateLimit-Reset: description: Number of seconds until the quota window resets. schema: type: integer minimum: 0 example: 27 content: application/json: schema: $ref: '#/components/schemas/4xx_post_portfolio_information' examples: failedProductInfo_NotFound: summary: Example response for a resource not found description: > This example shows the response returned when no information exists for the given portfolio / IPE. value: data: [] info: success: false statusCode: 404 error: - type: errors:3dx:resourceNotFound title: Not Found errors: - detail: Invalid accreditationID pointer: '#/accreditationId' 200_post_package_offer_content: description: OK headers: X-RateLimit-Limit: description: Total allowed quota in the current window. schema: type: integer minimum: 0 example: 100 X-RateLimit-Remaining: description: Remaining quota in the current window. schema: type: integer minimum: 0 example: 42 X-RateLimit-Reset: description: Number of seconds until the quota window resets. schema: type: integer minimum: 0 example: 27 content: application/json: schema: type: object required: - data - info properties: data: $ref: '#/components/schemas/package_offer_content_data' info: $ref: '#/components/schemas/info' examples: packageOfferExample: value: data: - number: 6NP-IFW-OC portfolio: Public Cloud 3DEXPERIENCE Platform release: 3DEXPERIENCE R2026x quantity: 1 - number: 6NP-CSV-OC portfolio: Public Cloud Governance/Lifecycle release: 3DEXPERIENCE R2026x quantity: 1 info: success: true statusCode: 200 estimatedSearchCount: 2 400_post_package_offer_content: description: Bad Request headers: X-RateLimit-Limit: description: Total allowed quota in the current window. schema: type: integer minimum: 0 example: 100 X-RateLimit-Remaining: description: Remaining quota in the current window. schema: type: integer minimum: 0 example: 42 X-RateLimit-Reset: description: Number of seconds until the quota window resets. schema: type: integer minimum: 0 example: 27 content: application/json: schema: $ref: '#/components/schemas/4xx_post_package_offer_content' examples: failedProductOfferContent_BadRequest: summary: Example response for missing required parameter description: > This example shows the response returned when product number is missing in the request body. value: data: [] info: success: false statusCode: 400 error: - type: errors:3dx:invalidRequest title: Bad Request errors: - detail: Invalid Product Number pointer: '#/number' 404_post_package_offer_content: description: Not Found headers: X-RateLimit-Limit: description: Total allowed quota in the current window. schema: type: integer minimum: 0 example: 100 X-RateLimit-Remaining: description: Remaining quota in the current window. schema: type: integer minimum: 0 example: 42 X-RateLimit-Reset: description: Number of seconds until the quota window resets. schema: type: integer minimum: 0 example: 27 content: application/json: schema: $ref: '#/components/schemas/4xx_post_package_offer_content' examples: failedProductOfferContent_NotFound: summary: Example response for a resource not found description: > This example shows the response returned when no information exists for the given product. value: data: [] info: success: false statusCode: 404 error: - type: errors:3dx:resourceNotFound title: Not Found errors: - detail: Package / Offer content not available commercially pointer: '#/number' 201_post_order_requests_create: description: Created headers: X-RateLimit-Limit: description: Total allowed quota in the current window. schema: type: integer minimum: 0 example: 100 X-RateLimit-Remaining: description: Remaining quota in the current window. schema: type: integer minimum: 0 example: 42 X-RateLimit-Reset: description: Number of seconds until the quota window resets. schema: type: integer minimum: 0 example: 27 content: application/json: schema: type: object description: Response body returned upon a successful create order request. properties: data: $ref: '#/components/schemas/order_requests_create_data' info: $ref: '#/components/schemas/info' error: $ref: '#/components/schemas/error' required: - data - info examples: successful_OrderCreateRequest: summary: Sample successful response for order request description: Example of response for order request value: data: - requestorContactId: C00001234567 id: OR_000000000123 type: C status: OPEN creationDateTime: '2025-05-21T14:30:00Z' info: success: true statusCode: 201 estimatedSearchCount: 1 400_post_order_requests_create: description: Bad request, invalid input. headers: X-RateLimit-Limit: description: Total allowed quota in the current window. schema: type: integer minimum: 0 example: 100 X-RateLimit-Remaining: description: Remaining quota in the current window. schema: type: integer minimum: 0 example: 42 X-RateLimit-Reset: description: Number of seconds until the quota window resets. schema: type: integer minimum: 0 example: 27 content: application/json: schema: type: object description: Response body returned when the create order request fails. properties: data: type: array description: Always an empty array in case of error responses. maxItems: 0 items: {} example: [] info: $ref: '#/components/schemas/info' error: $ref: '#/components/schemas/error' required: - info - data - error examples: failedOrderCreateRequest_BadRequest: summary: Example response for a bad request description: > This example shows the response returned when a bad request is made, such as when mandatory properties are not provided. value: data: [] info: success: false statusCode: 400 error: - type: errors:3dx:invalidRequest title: Bad Request errors: - detail: >- The required field is missing from the request payload. pointer: '#/businessUnitId' 200_get_order_requests: description: OK headers: X-RateLimit-Limit: description: Total allowed quota in the current window. schema: type: integer minimum: 0 example: 100 X-RateLimit-Remaining: description: Remaining quota in the current window. schema: type: integer minimum: 0 example: 42 X-RateLimit-Reset: description: Number of seconds until the quota window resets. schema: type: integer minimum: 0 example: 27 content: application/json: schema: type: object description: >- Successful response returning details of the requested order request (create or submit). properties: data: $ref: '#/components/schemas/order_requests_get_data' info: $ref: '#/components/schemas/info' error: $ref: '#/components/schemas/error' required: - data - info examples: successful_getOrderRequestDetails_with_valid_transaction_create: summary: Completed order request of type C (Create) description: > Response for a **completed** create order request where the `transaction` object is populated with its `id`. value: data: - requestorContactId: C00001234567 id: OR_000000000123 type: C status: COMP creationDateTime: '2025-05-21T14:30:00Z' transaction: id: PO_A123456789 info: success: true statusCode: 200 estimatedSearchCount: 1 successful_getOrderRequestDetails_with_valid_transaction_submit: summary: Completed order request of type S (Submit) description: > Response for a **completed** submit order request where the `transaction` object is populated with its `id`. value: data: - requestorContactId: C00001234567 id: OR_000000000124 type: S status: COMP creationDateTime: '2025-05-21T14:30:00Z' transaction: id: PO_A123456789 info: success: true statusCode: 200 estimatedSearchCount: 1 successful_getOrderRequestDetails_with_processing_error: summary: Order Request of type C(Create) in error description: > Response for a create order request that **failed** during the asynchronous batch processing. The `transaction` field is `null` because no real order was created, and the `batchProcessingErrors` array contains the error codes and messages that explain why the request could not be completed. value: data: - requestorContactId: C00001234567 id: OR_000000000123 type: C status: ERR batchProcessingErrors: - code: API4P_FC4 message: >- The value for the provided soldToSite/id 100012345678901 is not a legal entity. Please verify the input and try again. pointer: '#/soldToSite/id' - code: API4P_BT1 message: >- The value for the provided Bill To Contact Id C00001234567 is not found or is incorect. Please verify the input and try again. pointer: '#/billToContactId' creationDateTime: '2025-05-21T14:30:00Z' transaction: null info: success: true statusCode: 200 estimatedSearchCount: 1 400_get_order_requests: description: Bad Request. headers: X-RateLimit-Limit: description: Total allowed quota in the current window. schema: type: integer minimum: 0 example: 100 X-RateLimit-Remaining: description: Remaining quota in the current window. schema: type: integer minimum: 0 example: 42 X-RateLimit-Reset: description: Number of seconds until the quota window resets. schema: type: integer minimum: 0 example: 27 content: application/json: schema: $ref: '#/components/schemas/4xx_get_order_requests' examples: failedOrderCreateRequestGet_BadRequest: summary: Example response for missing required parameter description: > This example shows the response returned when id is missing in the request. value: data: [] info: success: false statusCode: 400 error: - type: errors:3dx:invalidRequest title: Bad Request errors: - detail: A required parameter is missing. pointer: '#/id' 404_get_order_requests: description: Not Found. headers: X-RateLimit-Limit: description: Total allowed quota in the current window. schema: type: integer minimum: 0 example: 100 X-RateLimit-Remaining: description: Remaining quota in the current window. schema: type: integer minimum: 0 example: 42 X-RateLimit-Reset: description: Number of seconds until the quota window resets. schema: type: integer minimum: 0 example: 27 content: application/json: schema: $ref: '#/components/schemas/4xx_get_order_requests' examples: failedOrderCreateRequestGet_NotFound: summary: Example response for a resource not found description: > This example shows the response returned when no Order Request exists with the provided Id. value: data: [] info: success: false statusCode: 404 error: - type: errors:3dx:resourceNotFound title: Not found errors: - detail: Change your parameters to get results pointer: '#' 200_customers_search: description: OK headers: X-RateLimit-Limit: description: Total allowed quota in the current window. schema: type: integer minimum: 0 example: 100 X-RateLimit-Remaining: description: Remaining quota in the current window. schema: type: integer minimum: 0 example: 42 X-RateLimit-Reset: description: Number of seconds until the quota window resets. schema: type: integer minimum: 0 example: 27 content: application/json: schema: type: object description: Response returned upon a successful customer search request. properties: data: $ref: '#/components/schemas/customers_search_data' info: $ref: '#/components/schemas/info' error: $ref: '#/components/schemas/error' required: - info - data examples: successful_customers_search_result: summary: Successful customers search example description: >- Example of a successful customers search request that returns multiple results, demonstrating top matches. value: data: - id: '100012345678901' name: Example Corporation localName: 示例公司 creationDate: '2025-06-01' isLegalEntity: true legalEntityId: '' vatId: FR12345678901 registrationIdentifiers: - type: PAN value: AAAAA0000A addressLocations: - id: 1 status: A isDeliverable: true isTransactionPossible: true hasPartnerActiveOrFutureLicense: true gstin: 27ABCDE1234F1Z5 countryCode: FRA countryName: France stateOrProvinceCode: IDF stateOrProvinceName: Île-de-France cityName: Paris cityLocalName: Париж addressLine1: 123 Rue de Rivoli addressLine2: Apt 4B addressLine3: 75001 Paris addressLine4: France postalCode: '75001' coterminousDates: - 04-29 - 12-09 - 07-20 - 03-22 info: success: true statusCode: 200 estimatedSearchCount: 3 successful_customers_search_noResult: summary: Successful customers search with no results description: >- Example of a successful customers search request that returns no results, indicating no customers. value: data: [] info: success: true statusCode: 200 estimatedSearchCount: 0 400_customers_search: description: Bad request, invalid input. headers: X-RateLimit-Limit: description: Total allowed quota in the current window. schema: type: integer minimum: 0 example: 100 X-RateLimit-Remaining: description: Remaining quota in the current window. schema: type: integer minimum: 0 example: 42 X-RateLimit-Reset: description: Number of seconds until the quota window resets. schema: type: integer minimum: 0 example: 27 content: application/json: schema: type: object description: Response body returned when the get customers request fails. properties: data: type: array description: Always an empty array in case of error responses. maxItems: 0 items: {} example: [] info: $ref: '#/components/schemas/info' error: $ref: '#/components/schemas/error' required: - info - data - error examples: failedCustomersSearch_BadRequest_topOutsideRange: $ref: '#/components/examples/400_invalid_top_parameter' failedCustomersSearch_BadRequest_skipNegativeNumber: $ref: '#/components/examples/400_invalid_skip_parameter' 200_post_contacts_search: description: OK headers: X-RateLimit-Limit: description: Total allowed quota in the current window. schema: type: integer minimum: 0 example: 100 X-RateLimit-Remaining: description: Remaining quota in the current window. schema: type: integer minimum: 0 example: 42 X-RateLimit-Reset: description: Number of seconds until the quota window resets. schema: type: integer minimum: 0 example: 27 content: application/json: schema: type: object description: Response body returned upon a successful contact search request. properties: data: $ref: '#/components/schemas/contacts_search_data' info: $ref: '#/components/schemas/info' error: $ref: '#/components/schemas/error' required: - info - data examples: contacts_search_one_result: summary: Sample successful basic search for contacts description: Sample successful basic search for contacts with only 1 result. value: data: - id: C00001234567 prefix: MS firstName: Jini lastName: DOE email: jini.doe@example.com login: jini.doe phoneNumber: 555-1234 ext. 56 mobileNumber: +33 6 12 34 56 78 creationDate: '2025-06-01' createdBy: DOE, John isObsolete: false profiles: - id: P0000XXXXXXX name: EXAMPLE CORP siteId: '100012345678901' siteName: Example Corporation isSOW4PMaster: true isObsolete: false roles: - Sales Administration - Marketing info: success: true statusCode: 0 estimatedSearchCount: 1 contacts_search_no_result: summary: Sample successful search for contacts without any results description: Sample successful search for contacts without any results value: data: [] info: success: true statusCode: 200 estimatedSearchCount: 0 400_post_contacts_search: description: Bad request, invalid input. headers: X-RateLimit-Limit: description: Total allowed quota in the current window. schema: type: integer minimum: 0 example: 100 X-RateLimit-Remaining: description: Remaining quota in the current window. schema: type: integer minimum: 0 example: 42 X-RateLimit-Reset: description: Number of seconds until the quota window resets. schema: type: integer minimum: 0 example: 27 content: application/json: schema: type: object description: Response body returned when the contact search request fails. properties: data: type: array description: Always an empty array in case of error responses. maxItems: 0 items: {} example: [] info: $ref: '#/components/schemas/info' error: $ref: '#/components/schemas/error' required: - info - data - error examples: contact_search_BadRequest: summary: Example response for a bad request description: > Bad‑request response when no required search parameters are supplied. value: data: [] info: success: false statusCode: 400 error: - type: errors:3dx:invalidRequest title: Bad Request errors: - detail: >- Atleast one mandatory parameter must be provided in the Request. Please refer the API Document. pointer: '#' 201_post_contact_create: description: Created headers: X-RateLimit-Limit: description: Total allowed quota in the current window. schema: type: integer minimum: 0 example: 100 X-RateLimit-Remaining: description: Remaining quota in the current window. schema: type: integer minimum: 0 example: 42 X-RateLimit-Reset: description: Number of seconds until the quota window resets. schema: type: integer minimum: 0 example: 27 content: application/json: schema: type: object description: Response body returned upon a successful create contact. properties: data: $ref: '#/components/schemas/contact_create_data' info: $ref: '#/components/schemas/info' error: $ref: '#/components/schemas/error' required: - info - data examples: successful_ContactCreateRequest: summary: Sample successful response for contact creation description: Example of response for contact creation value: data: - id: C00001234567 prefix: MS firstName: Jini lastName: DOE email: jini.doe@example.com login: jini.doe phoneNumber: 555-1234 ext. 56 mobileNumber: +33 6 12 34 56 78 creationDate: '2025-06-01' createdBy: DOE, John isObsolete: false profiles: - id: P0000XXXXXXX name: EXAMPLE CORP siteId: '100012345678901' siteName: Example Corporation isSOW4PMaster: true isObsolete: false roles: - Sales Administration - Marketing info: success: true statusCode: 201 estimatedSearchCount: 1 400_post_contact_create: description: Bad request, invalid input. headers: X-RateLimit-Limit: description: Total allowed quota in the current window. schema: type: integer minimum: 0 example: 100 X-RateLimit-Remaining: description: Remaining quota in the current window. schema: type: integer minimum: 0 example: 42 X-RateLimit-Reset: description: Number of seconds until the quota window resets. schema: type: integer minimum: 0 example: 27 content: application/json: schema: type: object description: Response body returned when the create contact request fails. properties: data: type: array description: Always an empty array in case of error responses. maxItems: 0 items: {} example: [] info: $ref: '#/components/schemas/info' error: $ref: '#/components/schemas/error' required: - info - data - error examples: failedContactCreate_BadRequest: summary: Example response for a bad request description: > Example of a Bad Request response. It is returned when a request fails validation, such as when required properties are missing or contain invalid values. value: data: [] info: success: false statusCode: 400 error: - type: errors:3dx:invalidRequest title: Bad Request errors: - detail: >- Given value is not valid or not correct. Please provide a valid value. pointer: '#/requestorContactId' - detail: >- Given value <> is not valid or not correct. Please provide a valid value. pointer: '#/firstName' 409_post_contact_create: description: Conflict headers: X-RateLimit-Limit: description: Total allowed quota in the current window. schema: type: integer minimum: 0 example: 100 X-RateLimit-Remaining: description: Remaining quota in the current window. schema: type: integer minimum: 0 example: 42 X-RateLimit-Reset: description: Number of seconds until the quota window resets. schema: type: integer minimum: 0 example: 27 content: application/json: schema: type: object description: >- Response body returned when the create contact request conflicts with an existing contact. properties: data: type: array description: Always an empty array in case of error responses. maxItems: 0 items: {} example: [] info: $ref: '#/components/schemas/info' error: $ref: '#/components/schemas/error' required: - info - data - error examples: failedContactCreate_Conflict: summary: Example response for a duplicate contact email description: > Example of a Conflict response. It is returned when a contact with the same email already exists in the system. value: data: [] info: success: false statusCode: 409 error: - type: errors:3dx:resourceConflict title: Conflict errors: - detail: >- Contact already exists with the given value . Please provide a new value. pointer: '#/email' 200_post_orders_search: description: OK headers: X-RateLimit-Limit: description: Total allowed quota in the current window. schema: type: integer minimum: 0 example: 100 X-RateLimit-Remaining: description: Remaining quota in the current window. schema: type: integer minimum: 0 example: 42 X-RateLimit-Reset: description: Number of seconds until the quota window resets. schema: type: integer minimum: 0 example: 27 content: application/json: schema: type: object description: Response body returned upon a successful order search request. properties: data: $ref: '#/components/schemas/orders_search_data' info: $ref: '#/components/schemas/info' error: $ref: '#/components/schemas/error' required: - info - data examples: successful_ordersSearch_OneResult_v1: 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: PRC description: XYZ Company Order 50 products creationDateTime: '2024-05-21T14:30:00Z' dsReceivedPoDate: '2024-05-21' bookingDateTime: '2024-05-29T18:00:00Z' lastUpdateDateTime: '2024-05-21T14:40:00Z' currency: USD onlineConsentStatus: X 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_post_orders_search: description: Bad Request headers: X-RateLimit-Limit: description: Total allowed quota in the current window. schema: type: integer minimum: 0 example: 100 X-RateLimit-Remaining: description: Remaining quota in the current window. schema: type: integer minimum: 0 example: 42 X-RateLimit-Reset: description: Number of seconds until the quota window resets. schema: type: integer minimum: 0 example: 27 content: application/json: schema: type: object description: Response body returned when the order search request fails. properties: data: type: array description: Always an empty array in case of error responses. maxItems: 0 items: {} example: [] info: $ref: '#/components/schemas/info' error: $ref: '#/components/schemas/error' required: - info - data - error 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 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: '#' 200_get_orders: description: OK headers: X-RateLimit-Limit: description: Total allowed quota in the current window. schema: type: integer minimum: 0 example: 100 X-RateLimit-Remaining: description: Remaining quota in the current window. schema: type: integer minimum: 0 example: 42 X-RateLimit-Reset: description: Number of seconds until the quota window resets. schema: type: integer minimum: 0 example: 27 content: application/json: schema: type: object description: Response body returned upon a successful order details request. properties: data: $ref: '#/components/schemas/order_get_data' info: $ref: '#/components/schemas/info' error: $ref: '#/components/schemas/error' required: - data - info examples: successful_getOrderDetails_v1: 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: PRC 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' lastUpdateDateTime: '2024-05-21T14:40:00Z' currency: USD onlineConsentStatus: X 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: ANN360 opportunityId: A1B2-C3D4E5 paymentTerms: Net Date of Invoice + 60 days licenseChargeConditions: - sequenceNumber: 1 lineGroup: SBL0001234567 onlineInstanceSeatId: R1122334455667 orderType: STOI 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 revenueType: ALC portfolio: CATIA release: 3DEXPERIENCE R2025x product: trigram: ABC type: NU number: 1AB-ABC name: Generic Product Standard with Cloud Services dsOffering: LIC quantity: 2 unitListPrice: 1000 totalListPrice: 2000 distributorNetAmount: 1930 distributorAnnualAmount: 1930 distributorDiscountPercentage: 30.5 distributorMaximumMarginPercentage: 10.5 customerMaximumNetAmount: 1958.95 customerMaximumAnnualAmount: 1958.95 customerMinimumDiscountPercentage: 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: CAPL info: success: true statusCode: 200 estimatedSearchCount: 1 400_get_orders: description: Bad Request headers: X-RateLimit-Limit: description: Total allowed quota in the current window. schema: type: integer minimum: 0 example: 100 X-RateLimit-Remaining: description: Remaining quota in the current window. schema: type: integer minimum: 0 example: 42 X-RateLimit-Reset: description: Number of seconds until the quota window resets. schema: type: integer minimum: 0 example: 27 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 error: - type: errors:3dx:invalidRequest title: Bad Request errors: - detail: A required parameter is missing. pointer: '#/transactionId' 404_get_orders: description: Not Found headers: X-RateLimit-Limit: description: Total allowed quota in the current window. schema: type: integer minimum: 0 example: 100 X-RateLimit-Remaining: description: Remaining quota in the current window. schema: type: integer minimum: 0 example: 42 X-RateLimit-Reset: description: Number of seconds until the quota window resets. schema: type: integer minimum: 0 example: 27 content: application/json: schema: $ref: '#/components/schemas/4xx_get_orders' examples: failedOrderGet_NotFound: 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: 404 error: - type: errors:3dx:resourceNotFound title: Not found errors: - detail: Change your parameters to get results pointer: '#' 200_accreditations_search: description: OK headers: X-RateLimit-Limit: description: Total allowed quota in the current window. schema: type: integer minimum: 0 example: 100 X-RateLimit-Remaining: description: Remaining quota in the current window. schema: type: integer minimum: 0 example: 42 X-RateLimit-Reset: description: Number of seconds until the quota window resets. schema: type: integer minimum: 0 example: 27 content: application/json: schema: type: object description: Response returned upon a successful accreditation search request. properties: data: $ref: '#/components/schemas/accreditations_search_data' info: $ref: '#/components/schemas/info' error: $ref: '#/components/schemas/error' required: - info - data examples: successful_accreditations_search_threeResult_v1: summary: Successful accreditation search example description: >- Example of a successful accreditation search request that returns multiple results, demonstrating top matches. value: data: - id: PRTF008 name: Support & Services Offering accreditationType: R - id: PRTF063 name: Public Cloud 3DEXPERIENCE WORKS accreditationType: R - id: IPE00041462 name: 18-Sub-system Level Structural Validation accreditationType: I deploymentType: '4' industrySolutionExperience: id: ISE00005355 name: Co-Design to Target solutionRelease: id: REL00000055 name: 3DEXPERIENCE R2025x industry: id: IND000005 name: Aerospace & Defense info: success: true statusCode: 200 estimatedSearchCount: 3 successful_accreditations_search_noResult: summary: Successful accreditation search with no results description: >- Example of a successful accreditation search request that returns no results, indicating no matching accreditations. value: data: [] info: success: true statusCode: 200 estimatedSearchCount: 0 400_accreditations_search: description: Bad Request headers: X-RateLimit-Limit: description: Total allowed quota in the current window. schema: type: integer minimum: 0 example: 100 X-RateLimit-Remaining: description: Remaining quota in the current window. schema: type: integer minimum: 0 example: 42 X-RateLimit-Reset: description: Number of seconds until the quota window resets. schema: type: integer minimum: 0 example: 27 content: application/json: schema: type: object description: >- Response body returned when the accreditation search request fails. properties: data: type: array description: Always an empty array in case of error responses. maxItems: 0 items: {} example: [] info: $ref: '#/components/schemas/info' error: $ref: '#/components/schemas/error' required: - info - data - error examples: failedAccreditationSearch_BadRequest_topOutsideRange: $ref: '#/components/examples/400_invalid_top_parameter' failedAccreditationSearch_BadRequest_skipNegativeNumber: $ref: '#/components/examples/400_invalid_skip_parameter' requestBodies: product_price_list_req: description: | Request body containing details about: - Portfolio vs. Industry Process Experience (accreditationType) - Portfolio/IPE Id (accreditationId) - Price List Id (priceListId) - Optional status for current or future price list (priceListStatus) The system: - Performs accreditation checks - Retrieves Products + Migration Paths - Selects latest release - Fetches prices and margins - Computes partner and first-year discount prices - Applies pagination on productNumber (ascending) content: application/json: schema: type: object description: Request body for Product Price List API required: - accreditationType - accreditationId - priceListId properties: accreditationType: $ref: '#/components/schemas/accreditation_type' accreditationId: $ref: '#/components/schemas/accreditation_id' description: | Portfolio Id or IPE Id. Must consist of uppercase letters and numbers. Format will be validated. priceListId: $ref: '#/components/schemas/price_list_id' priceListStatus: type: string maxLength: 1 default: C description: | Indicates which price list should be considered. - Not provided or 'C' returns current prices - 'F' returns future prices enum: - C - F x-enumDescriptions: C: Current F: Future example: F examples: basicRequest: summary: Example request for product price list value: accreditationType: R accreditationId: PRTF136 priceListId: 17 priceListStatus: C required: true portfolio_information_req: description: | Request body specifying accreditation type and Id. - `accreditationType` - `accreditationId` content: application/json: schema: type: object properties: accreditationType: $ref: '#/components/schemas/accreditation_type' accreditationId: $ref: '#/components/schemas/accreditation_id' description: | Portfolio Id or IPE Id. Must consist of uppercase letters and numbers. Format and accreditation will be validated. required: - accreditationType - accreditationId examples: basicRequest: summary: Example Portfolio Information request value: accreditationType: R accreditationId: PRTF00XX required: true package_offer_content_req: description: | Request body specifying Product Number and Release Name. - `number` - `release` content: application/json: schema: type: object properties: number: description: Product Number of the item $ref: '#/components/schemas/product_number' release: description: | Release name of the package/offer $ref: '#/components/schemas/release_name' required: - number - release examples: packageOfferRequestExample: value: number: 5CB-DIC-EDU release: V5-6R2025 required: true order_requests_create_req: description: > **Order Request payload** This object represents the JSON body that a client sends to submit a request for a new purchase order. The service validates the payload and stores it for later batch processing (the actual order is created asynchronously). **License charge date processing** The effective license line **start date** and **end date** are resolved from `licenseChargeConditions[].startDate`, `customerRequestedArrivalDate`, `renewalInformation`, and line duration. **Date coherence** (start date on or before end date) is validated during **batch processing**, not at synchronous request acceptance. A request may return `200` with `status: OPEN` even when date values are inconsistent. See field-level descriptions on `licenseChargeConditions[].startDate`, `customerRequestedArrivalDate`, and `renewalInformation` for resolution and cross-field rules. **Coupon handling** See `licenseChargeConditions[].coupons` for PxC/AxC rules and optional `yearNumber` semantics (omit or `0` vs non-zero). content: application/json: schema: type: object properties: requestorContactId: $ref: '#/components/schemas/orderRequest_requestor' businessUnitId: $ref: '#/components/schemas/id' billToSite: description: > Legal entity to which Dassault Systèmes will issue the invoice (Bill To). $ref: '#/components/schemas/billto_site' soldToSite: description: > Legal entity of the company that is the Final Customer of Dassault Systèmes products (Sold To). $ref: '#/components/schemas/final_customer_site' required: - id billToContactId: description: > Identifier 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. $ref: '#/components/schemas/contact_id' example: C00001234567 soldToContactId: description: > Identifier of the contact person responsible for the **Sold‑To** site. $ref: '#/components/schemas/contact_id_or_empty' examples: - C00001234567 - '' onlineServiceAccessContactId: description: > Identifier of the contact person who is the designated individual responsible for receiving critical communications related to the administration of purchased online services. This includes access credentials, onboarding instructions, service updates, and license renewal notifications. This role ensures continuity in managing the service, even if separate from the technical administrator. $ref: '#/components/schemas/contact_id_or_empty' examples: - C00001234567 - '' agreementType: type: string description: Type of CLOSA Agreement type that governs the order. enum: - CLOSA - CLOSA_E - CLOSA_R x-enumDescriptions: CLOSA: Standard CLOSA agreement. CLOSA_E: CLOSA for Education Use. CLOSA_R: CLOSA for Non-Profit Research Use. example: CLOSA renewalInformation: description: > **Renewal Information** – defines how the renewal date of a software licence (or subscription) is aligned for a customer. Renewal date alignment mechanism that standardizes the end date of software licenses to a common, recurring date (e.g., a specific day and month each year). This simplifies renewal management, billing cycles, and administrative tracking by ensuring all licenses for a customer expire and renew on the same date annually, rather than scattered throughout the year. Possible configurations are driven by anniversaryMode attribute value : | anniversaryMode value | Description | | ----------- | ----------- | | NON_COTERM | Non Coterminous | | COTERM_ALIGN | First Year Coterminous Align | | COTERM_NEW | First Year Coterminous with New Date | **Business rule** – License end date (evaluated during batch processing): - When `anniversaryMode` is `COTERM_NEW`, `newCoterminousEndDate` defines the **first-year coterminous end date** for license charge lines. Year handling depends on whether the order creates a **new** Seat Id or uses an **existing** Seat Id (`licenseChargeConditions[].onlineInstanceSeatId`); see `newCoterminousEndDate` for the full rules. In particular, when the Final Customer site already has the month-day from `newCoterminousEndDate` and the order targets an existing Seat Id, the API uses that month-day but sets the license end year to the **following calendar year** after the year in `newCoterminousEndDate` (not the year in the request). - When `anniversaryMode` is `COTERM_ALIGN`, the end date is derived from `coterminousDate` and `licenseEndYear`. - The effective start date (per `licenseChargeConditions[].startDate` resolution rules) must be on or before the computed end date. On violation, batch processing fails with `API4P_ST2` (pointer: `#/licenseChargeConditions/[index]/startDate`). allOf: - $ref: '#/components/schemas/renewal_information' dsSalesRepresentativeEmail: description: >- Email address of the Dassault Systèmes sales representative responsible for the order. $ref: '#/components/schemas/email' example: Jini.Doe@3ds.com billToSalesRepresentativeContactId: description: > Identifier of the sales contact person at the **Bill-To** site who acts as the Bill-To Sales Representative on the purchase order. Optional. Use an empty string (`""`) or omit the field when no Bill-To Sales Representative is supplied in the request. **Business rule** – Bill-To Sales Representative resolution (evaluated during batch processing): Processing depends on whether the supplied contact is associated with the Bill-To site (`billToSite`) and on the Business Unit (`businessUnitId`): | Situation | Outcome | |-----------|---------| | The contact **is associated with** the Bill-To site and has a Bill-To Sales Representative role (**DS_ECO_554** Sales Expert or **DS_ECO_506** SALES) | The contact is used as the Bill-To Sales Representative on the created purchase order. | | The contact **is associated with** the Bill-To site but **does not** have either Bill-To Sales Representative role | Batch processing fails with **`API4P_BTSR1`** (pointer: `#/billToSalesRepresentativeContactId`). | | The contact **is not associated with** the Bill-To site | The value in the request is **not** applied as-is. Behavior depends on the Business Unit (see below). | When the provided contact id **does not belong** to the Bill-To site: 1. **CRE** – The purchase order is still created. The Bill-To Sales Representative on the order is **defaulted** to the Bill-To Sales Representative from the **most recent** purchase order in DSx for the same **Bill-To** and **Sold-To** combination (`billToSite` + `soldToSite`). 2. **Non-CRE** business units – The Bill-To Sales Representative on the created purchase order remains **blank** (the submitted value is not used). See the **Contact** section of the batch processing error catalog for **`API4P_BTSR1`**. $ref: '#/components/schemas/contact_id_or_empty' examples: - C00001234567 - '' customerRequestedArrivalDate: description: > Customer Requested Arrival Date (CRAD) indicates the date by which the Final Customer requests delivery of the Dassault Systèmes 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. - Format: ISO 8601 format (YYYY-MM-DD) **Business rule** – License line start date (evaluated during batch processing): When a license charge line omits `startDate` (or supplies an empty value `""`), CRAD is used as the **effective line start date**. See `licenseChargeConditions[].startDate` for the full resolution order. **Partner guidance:** When using `COTERM_NEW` or `COTERM_ALIGN`, ensure CRAD (or an explicit line `startDate`) is on or before the computed first-year end date defined in `renewalInformation`. $ref: '#/components/schemas/customer_requested_arrival_date' billToPoReference: $ref: '#/components/schemas/billto_po_reference' subDistributorSiteId: type: string description: >- Identifier of the Sub-Distributor, intermediary entity within a multi-tier distribution model, distinct from the Primary Distributor. maxLength: 15 example: SDIS000000000xx priceListId: $ref: '#/components/schemas/price_list_id' description: > Unique identifier of Price List. The list of allowed Price Lists can be retrieved via the Get Price Lists API. description: $ref: '#/components/schemas/description' comment: type: string maxLength: 10000 description: > Free‑form text message intended for Dassault Systèmes. This field can be used by the requestor to provide additional context, special instructions, or any other information that may help Dassault Systèmes to process the order more effectively. example: >- Please prioritize this order as the customer requires the license before the end of Q2 for a product launch. Also, note that the discount approved in the attached quote should be applied. recurringChargeBillingCycle: $ref: '#/components/schemas/recurring_charge_billing_cycle' description: >- Billing‑cycle identifier for the recurring charge(s) on the order. **Business rule** – This rule is applied **for every request**: 1. The value supplied by the client is looked up in the list of **Possible Billing Cycles** configured for the Business Unit identified by `businessUnitId`. 2. **If the supplied value is found**, it is used unchanged. 3. **If the supplied value is missing or not found**, the system falls back to the **Default Billing Cycle** defined on that Business Unit. The resolved billing‑cycle value is persisted on the Purchase Order and drives all subsequent invoicing calculations. opportunityId: $ref: '#/components/schemas/opportunity_id' licenseComplianceCaseId: $ref: '#/components/schemas/license_compliance_case_id' licenseChargeConditions: $ref: '#/components/schemas/license_charge_conditions_concise' required: - requestorContactId - businessUnitId - soldToSite - billToContactId - agreementType - renewalInformation - licenseChargeConditions examples: orderCreationRequestPayload1: summary: Ordering new licenses for Online Instance and its products description: | New order for Online Instance and its products value: requestorContactId: C00001234567 businessUnitId: BU001 billToSite: locationId: 2 soldToSite: id: '100012345678901' locationId: 2 billToContactId: C00001234567 soldToContactId: C00007654321 onlineServiceAccessContactId: C00001234567 agreementType: CLOSA renewalInformation: anniversaryMode: COTERM_ALIGN coterminousDate: 06-30 licenseEndYear: '2027' dsSalesRepresentativeEmail: Jini.Doe@3ds.com billToSalesRepresentativeContactId: C00001234567 customerRequestedArrivalDate: '2026-09-16' billToPoReference: EXAMPLE-CORP-20250518 subDistributorSiteId: SDIS000000000xx priceListId: 17 description: New 3DEXPERIENCE Platform comment: >- Please prioritize this order as the customer requires the license before the end of Q2 for a product launch. Also, note that the discount approved in the attached quote should be applied. recurringChargeBillingCycle: ANN360 opportunityId: A1B2-C3D4E5 licenseComplianceCaseId: '1234567890123' licenseChargeConditions: - onlineInstanceSeatId: '' lineItemUuid: 1928b338-5ef4-4505-b5d0-e4af60848dba waiver: endDate: '2026-09-30' accreditationId: PRTF088 release: 3DEXPERIENCE R2026x product: trigram: IFW-OC type: NU quantity: 1 revenueType: YSC startDate: '2026-09-16' duration: 2 coupons: - yearNumber: 1 name: ALMARC00000123 - yearNumber: 2 name: ALMARC00000124 - onlineInstanceSeatId: '' parentLineItemUuid: 1928b338-5ef4-4505-b5d0-e4af60848dba waiver: endDate: '2026-09-30' accreditationId: PRTF071 release: 3DEXPERIENCE R2026x product: trigram: CSV-OC type: NU quantity: 1 revenueType: YSC startDate: '2026-09-16' duration: 2 coupons: - yearNumber: 1 name: ALMARC00000123 - yearNumber: 2 name: ALMARC00000124 orderCreationRequestPayload2: summary: >- Ordering new licenses for a cloud product on already existing Online Instance description: | New order for cloud product on already existing Online Instance. value: requestorContactId: C00001234567 businessUnitId: BU001 billToSite: locationId: 2 soldToSite: id: '100012345678901' locationId: 2 billToContactId: C00001234567 soldToContactId: C00007654321 onlineServiceAccessContactId: C00001234567 agreementType: CLOSA renewalInformation: anniversaryMode: COTERM_NEW newCoterminousEndDate: '2026-04-30' dsSalesRepresentativeEmail: Jini.Doe@3ds.com billToSalesRepresentativeContactId: C00001234567 customerRequestedArrivalDate: '2026-09-16' billToPoReference: EXAMPLE-CORP-20250518 subDistributorSiteId: SDIS000000000xx priceListId: 17 description: 1 Mechanical & Shape Engineer comment: >- Please prioritize this order as the customer requires the license before the end of Q2 for a product launch. Also, note that the discount approved in the attached quote should be applied. recurringChargeBillingCycle: ANN360 opportunityId: A1B2-C3D4E5 licenseComplianceCaseId: '1234567890123' licenseChargeConditions: - onlineInstanceSeatId: R1122334455667 waiver: endDate: '2026-09-30' accreditationId: PRTF070 release: 3DEXPERIENCE R2026x product: trigram: M3S-OC type: NU quantity: 1 revenueType: QRC startDate: '2026-09-16' duration: 1 orderCreationRequestPayload3: summary: Ordering new licenses for both Solidworks desktop and cloud description: > New order for both Solidworks desktop and cloud * SOLIDWORKS Design Standard with Cloud Services, 1 quantity, Seat Id Standalone * SOLIDWORKS Electrical Professional, 1 quantity, Add on to Seat Id Standalone * SOLIDWORKS Design Professional Network with Cloud Services, 5 quantity, Seat Id Network * SOLIDWORKS Flow Simulation Electronic Cooling Module Network Add-On, 5 qantity, Add on to Seat Id Network value: requestorContactId: C00001234567 businessUnitId: BU001 billToSite: locationId: 2 soldToSite: id: '100012345678901' locationId: 2 billToContactId: C00001234567 soldToContactId: C00007654321 onlineServiceAccessContactId: C00001234567 agreementType: CLOSA renewalInformation: anniversaryMode: COTERM_NEW newCoterminousEndDate: '2026-04-30' dsSalesRepresentativeEmail: Jini.Doe@3ds.com billToSalesRepresentativeContactId: C00001234567 customerRequestedArrivalDate: '2026-09-16' billToPoReference: EXAMPLE-CORP-20250518 subDistributorSiteId: SDIS000000000xx priceListId: 17 description: Solidwords Desktop with Cloud comment: >- Please prioritize this order as the customer requires the license before the end of Q2 for a product launch. Also, note that the discount approved in the attached quote should be applied. recurringChargeBillingCycle: ANN360 opportunityId: A1B2-C3D4E5 licenseComplianceCaseId: '1234567890123' licenseChargeConditions: - onlineInstanceSeatId: '' lineItemUuid: eb73248d-c826-4557-b62c-a5b4ac0662ab accreditationId: PRTF240 release: SOLIDWORKS 2026 product: trigram: SCWW type: P quantity: 1 revenueType: PAC startDate: '2026-09-16' duration: 2 - onlineInstanceSeatId: '' parentLineItemUuid: eb73248d-c826-4557-b62c-a5b4ac0662ab accreditationId: PRTF240 release: SOLIDWORKS 2026 product: trigram: EPWW type: DS quantity: 1 revenueType: PAC startDate: '2026-09-16' duration: 2 - onlineInstanceSeatId: '' lineItemUuid: 1928b338-5ef4-4505-b5d0-e4af60848dba accreditationId: PRTF240 release: SOLIDWORKS 2026 product: trigram: SCPW-O type: P quantity: 1 revenueType: PAC startDate: '2026-09-16' duration: 2 - onlineInstanceSeatId: '' parentLineItemUuid: 1928b338-5ef4-4505-b5d0-e4af60848dba accreditationId: PRTF240 release: SOLIDWORKS 2026 product: trigram: FCMW-O type: AS quantity: 1 revenueType: PAC startDate: '2026-09-16' duration: 2 orderCreationRequestPayload4: summary: Ordering SolidWorks products on an existing Network Seat Id description: > Additional product licenses on an existing SolidWorks Network Seat Id the customer already owns. The Seat Id is supplied in `onlineInstanceSeatId`; no `lineItemUuid` or `parentLineItemUuid` is used. When `anniversaryMode` is `COTERM_NEW` and the Final Customer site already has the month-day from `newCoterminousEndDate` among its coterminous dates, the license end year is the following calendar year after the year in `newCoterminousEndDate` (not the year in the request). See `newCoterminousEndDate` business rules. value: requestorContactId: C00001234567 businessUnitId: BU001 billToSite: locationId: 2 soldToSite: id: '100012345678901' locationId: 2 billToContactId: C00001234567 soldToContactId: C00007654321 onlineServiceAccessContactId: C00001234567 agreementType: CLOSA renewalInformation: anniversaryMode: COTERM_NEW newCoterminousEndDate: '2026-04-30' dsSalesRepresentativeEmail: Jini.Doe@3ds.com billToSalesRepresentativeContactId: C00001234567 customerRequestedArrivalDate: '2026-09-16' billToPoReference: EXAMPLE-CORP-20250518 subDistributorSiteId: SDIS000000000xx priceListId: 17 description: SW Flow simul on Network seat comment: >- Please prioritize this order as the customer requires the license before the end of Q2 for a product launch. Also, note that the discount approved in the attached quote should be applied. recurringChargeBillingCycle: ANN360 opportunityId: A1B2-C3D4E5 licenseComplianceCaseId: '1234567890123' licenseChargeConditions: - onlineInstanceSeatId: '5622498' accreditationId: PRTF240 release: SOLIDWORKS 2026 product: trigram: FCMW-O type: AS quantity: 5 revenueType: PAC startDate: '2026-09-16' duration: 2 orderCreationRequestPayload5: summary: PAC line with PxC and AxC coupons (optional yearNumber) description: > PAC line demonstrating coupon `yearNumber` semantics. On a PAC line, the PxC component is a **PLC** sub-line and AxC components are **ALC** sub-lines (see coupon terminology in the `coupons` schema). - **PxC coupon (PLC revenue type)** — `yearNumber` omitted; applies to the PxC sub-line on this PO line (`yearNumber: 0` is equivalent). - **AxC coupon (global, ALC revenue type)** — `yearNumber` omitted; applies to all AxC sub-lines and contract years in the order. - **AxC coupon (year-specific, ALC revenue type)** — `yearNumber: 1` and `2` target individual contract years only. value: requestorContactId: C00001234567 businessUnitId: BU001 billToSite: locationId: 2 soldToSite: id: '100012345678901' locationId: 2 billToContactId: C00001234567 soldToContactId: C00007654321 onlineServiceAccessContactId: C00001234567 agreementType: CLOSA renewalInformation: anniversaryMode: COTERM_NEW newCoterminousEndDate: '2026-04-30' dsSalesRepresentativeEmail: Jini.Doe@3ds.com billToSalesRepresentativeContactId: C00001234567 customerRequestedArrivalDate: '2026-09-16' billToPoReference: EXAMPLE-CORP-20250518 subDistributorSiteId: SDIS000000000xx priceListId: 17 description: PAC PxC(PLC) AxC(ALC) coupons comment: >- Demonstrates optional yearNumber for PxC (omit) and AxC (omit for global, 1/2 for per-year). recurringChargeBillingCycle: ANN360 opportunityId: A1B2-C3D4E5 licenseComplianceCaseId: '1234567890123' licenseChargeConditions: - onlineInstanceSeatId: '' lineItemUuid: a1b2c3d4-e5f6-7890-abcd-ef1234567890 accreditationId: PRTF070 release: 3DEXPERIENCE R2026x product: trigram: M3S-OC type: NU quantity: 1 revenueType: PAC startDate: '2026-09-16' duration: 2 coupons: - name: ALMARC00000125 - name: ALMARC00000126 - yearNumber: 1 name: ALMARC00000127 - yearNumber: 2 name: ALMARC00000128 required: true contacts_search_req: description: > A JSON object specifying filter criteria for retrieving matching contacts. The request must include at least one of the following sub-objects: - `contactId` - `email` - `firstName` - `lastName` - `login` - `mobileNumber` - `phoneNumber` - `profileId` - `siteId` - `siteName` These will be combined using an AND operator if more than one is provided. content: application/json: schema: type: object properties: contactId: $ref: '#/components/schemas/contact_id' firstName: $ref: '#/components/schemas/firstName' lastName: $ref: '#/components/schemas/lastName' email: $ref: '#/components/schemas/contact_email' login: $ref: '#/components/schemas/login' phoneNumber: $ref: '#/components/schemas/phoneNumber' mobileNumber: $ref: '#/components/schemas/mobileNumber' profileId: $ref: '#/components/schemas/profile_id' siteId: $ref: '#/components/schemas/legal_entity_id' siteName: $ref: '#/components/schemas/legal_entity_name' additionalProperties: false minProperties: 1 examples: basicContactSearchSingleCriteria: summary: >- Sample request body for searching contacts using a single criterion description: > This example demonstrates how to search for contacts using the `firstName` criterion. This JSON payload retrieves all contacts having first name `Jini`. value: firstName: Jini advancedContactSearchMultipleCriteria: summary: >- Sample request body for searching contacts using multiple criteria description: > This example demonstrates how to search for orders using multiple criteria: - `lastName` - `siteName` This JSON payload searches for all contacts having: - Last Name as DOE - Profile having Site Name as "Example Corp" value: lastName: DOE siteName: Example Corp required: true contact_create_req: description: | The request body for creating a new contact. content: application/json: schema: type: object properties: requestorContactId: description: > Unique identifier of the contact person who submitted the new contact creation request. The contact person who submitted the new contact creation request must have the appropriate roles or permissions in the system to create or modify specific component associated with this API. $ref: '#/components/schemas/contact_id' prefix: $ref: '#/components/schemas/prefix' firstName: $ref: '#/components/schemas/firstName' lastName: $ref: '#/components/schemas/lastName' email: $ref: '#/components/schemas/contact_email' phoneNumber: $ref: '#/components/schemas/phoneNumber' mobileNumber: $ref: '#/components/schemas/mobileNumber' siteId: $ref: '#/components/schemas/final_customer_site_id' required: - requestorContactId - firstName - lastName - email - siteId additionalProperties: false examples: contactCreationPayload: summary: Sample request body for creating contact description: | This example demonstrates the payload for creating new contact. value: requestorContactId: C00001234567 prefix: MS firstName: Jini lastName: DOE email: jini.doe@example.com phoneNumber: 555-1234 ext. 56 mobileNumber: +33 6 12 34 56 78 siteId: '100012345678901' required: true orders_search_req: description: > A JSON object specifying filter criteria for retrieving matching orders. The request must include at least one of the following sub-objects: - `creationDateTime` - `bookingDateTime` - `lastUpdateDateTime` - `installedBaseNumber` - `onlineInstanceSeatId` - `billToPoReferences` These will be combined using an AND operator if more than one is provided. content: application/json: schema: type: object properties: creationDateTime: $ref: '#/components/schemas/creation_datetime_req' bookingDateTime: $ref: '#/components/schemas/booking_datetime_req' lastUpdateDateTime: $ref: '#/components/schemas/lastupdate_datetime_req' installedBaseNumber: $ref: '#/components/schemas/installed_base_number' onlineInstanceSeatId: $ref: '#/components/schemas/online_instance_seat_id' billToPoReferences: $ref: '#/components/schemas/billto_po_references_req' transactionType: description: > Order type (one of: `PO`, `RN`). If left unspecified, records of both transaction types will be included in the response. $ref: '#/components/schemas/transaction_type' anyOf: - required: - creationDateTime - required: - bookingDateTime - required: - lastUpdateDateTime - required: - installedBaseNumber - required: - onlineInstanceSeatId - required: - billToPoReferences examples: basicSearchSingleCriteria: summary: Search Orders using 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: Search 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 examples: 400_invalid_top_parameter: summary: Top query parameter is outside the allowed ranged description: | Response returned when the top parameter exceeds the allowed range. value: data: [] info: success: false statusCode: 400 error: - type: errors:3dx:invalidRequest title: Bad Request errors: - detail: >- Invalid pagination parameter. It must be a positive natural number between 1 and 100. pointer: '#/Top' 400_invalid_skip_parameter: summary: skip query parameter is a negative number description: > This example shows the response returned when a bad request is made, such as when the skip parameter is a negative number. value: data: [] info: success: false statusCode: 400 error: - type: errors:3dx:invalidRequest title: Bad Request errors: - detail: >- Invalid pagination parameter. It must be a positive whole number. pointer: '#/Skip' x-tagGroups: - name: Authentication tags: - apikeys - name: Order Management tags: - Orders - Order Requests - Price-Lists - Products - Customers - Contacts - name: Business Error Catalogs tags: - Order Creation - name: Schemas tags: - Schemas