api
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
api [2019/11/29 16:04] – flack | api [2022/04/29 14:20] – flack | ||
---|---|---|---|
Line 1: | Line 1: | ||
API base url: https:// | API base url: https:// | ||
- | Examples are demonstrated with [[https:// | + | Examples are demonstrated with [[https:// |
+ | |||
+ | Only the most important request/ | ||
====== Response status codes ====== | ====== Response status codes ====== | ||
Line 90: | Line 92: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | If you call this API endpoint as an authenticated user (=you provide a [[api# | ||
Line 158: | Line 162: | ||
===== InChIKey lookup ===== | ===== InChIKey lookup ===== | ||
== Endpoint: == | == Endpoint: == | ||
- | < | + | < |
== Example API request: == | == Example API request: == | ||
Line 231: | Line 235: | ||
Authentication is currently a token based authentication. | Authentication is currently a token based authentication. | ||
- | If you would like to access our protected API endpoints, please drop us an email at support@mcule.com and we can provide you with a token. | + | If you would like to access our protected API endpoints, please drop us an email at support@mcule.com |
Once you have a valid token you have to send it in the Authorization header: | Once you have a valid token you have to send it in the Authorization header: | ||
Line 341: | Line 345: | ||
http ' | http ' | ||
</ | </ | ||
+ | |||
+ | |||
+ | ===== Compound list details ===== | ||
+ | |||
+ | With this endpoint you can get compound details information for multiple compound mcule IDs in a single API call. | ||
+ | |||
+ | == Endpoint: == | ||
+ | < | ||
+ | |||
+ | == Basic API request: == | ||
+ | < | ||
+ | echo ' | ||
+ | </ | ||
+ | |||
+ | |||
+ | == Example API request: == | ||
+ | < | ||
+ | echo ' | ||
+ | </ | ||
+ | |||
+ | == Request: == | ||
+ | < | ||
+ | POST / | ||
+ | Authorization: | ||
+ | Content-Type: | ||
+ | |||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | ], | ||
+ | " | ||
+ | 1, | ||
+ | 5, | ||
+ | 10 | ||
+ | ] | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | == Response: == | ||
+ | < | ||
+ | HTTP/1.1 200 OK | ||
+ | Content-Type: | ||
+ | |||
+ | { | ||
+ | " | ||
+ | " | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | ], | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | ], | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | ] | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Fields: | ||
+ | * **mcule_ids**: | ||
+ | * **availability**: | ||
+ | * **components**: | ||
+ | * **price_amounts**: | ||
+ | |||
+ | Limits: | ||
+ | * **mcule_ids**: | ||
+ | * **price_amounts**: | ||
+ | |||
===== Multiple queries exact search ===== | ===== Multiple queries exact search ===== | ||
Multiple queries exact search currently accepts the following input identifiers: | Multiple queries exact search currently accepts the following input identifiers: | ||
+ | The maximum number of queries you can send to this endpoint is 1000 currently. | ||
== Endpoint: == | == Endpoint: == | ||
Line 383: | Line 637: | ||
" | " | ||
{ | { | ||
- | " | + | " |
- | " | + | " |
- | " | + | " |
+ | " | ||
+ | " | ||
+ | " | ||
" | " | ||
- | }, | + | }, |
{ | { | ||
- | " | + | " |
- | " | + | " |
- | " | + | " |
+ | " | ||
+ | " | ||
+ | " | ||
" | " | ||
- | }, | + | }, |
{ | { | ||
- | " | + | " |
- | " | + | " |
- | "smiles": " | + | " |
- | " | + | " |
- | }, | + | "query": " |
+ | " | ||
+ | " | ||
+ | }, | ||
{ | { | ||
- | " | + | " |
- | " | + | " |
- | " | + | " |
+ | " | ||
+ | " | ||
+ | " | ||
" | " | ||
} | } | ||
Line 409: | Line 675: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | Please note that in case the queries are InChIKeys, **matching_level** and **matching_level_display** will always be **null** in the response. | ||
===== Multiple queries exact search with availability ===== | ===== Multiple queries exact search with availability ===== | ||
Line 449: | Line 717: | ||
{ | { | ||
" | " | ||
- | " | + | " |
- | " | + | " |
" | " | ||
- | }, | + | }, |
- | " | + | " |
- | " | + | " |
- | " | + | " |
+ | " | ||
+ | " | ||
+ | " | ||
" | " | ||
- | }, | + | }, |
{ | { | ||
" | " | ||
- | " | + | " |
- | " | + | " |
" | " | ||
- | }, | + | }, |
- | " | + | " |
- | " | + | " |
- | " | + | " |
+ | " | ||
+ | " | ||
+ | " | ||
" | " | ||
- | }, | + | }, |
{ | { | ||
" | " | ||
- | " | + | " |
- | " | + | " |
" | " | ||
- | }, | + | }, |
- | " | + | " |
- | " | + | " |
- | "smiles": " | + | " |
- | " | + | " |
- | }, | + | "query": " |
+ | " | ||
+ | " | ||
+ | }, | ||
{ | { | ||
" | " | ||
- | " | + | " |
- | " | + | " |
" | " | ||
- | }, | + | }, |
- | " | + | " |
- | " | + | " |
- | " | + | " |
+ | " | ||
+ | " | ||
+ | " | ||
" | " | ||
} | } | ||
] | ] | ||
- | } | + | } |
+ | </ | ||
+ | |||
+ | Please note that in case the queries are InChIKeys, **matching_level** and **matching_level_display** will always be **null** in the response. | ||
+ | |||
+ | |||
+ | ===== Similarity search ===== | ||
+ | Similarity search currently accepts the following input identifiers: | ||
+ | |||
+ | == Endpoint: == | ||
+ | < | ||
+ | |||
+ | == Example API request: == | ||
+ | < | ||
+ | echo ' | ||
+ | </ | ||
+ | |||
+ | or | ||
+ | |||
+ | < | ||
+ | echo ' | ||
+ | </ | ||
+ | |||
+ | == Request: == | ||
+ | < | ||
+ | POST / | ||
+ | Accept: application/ | ||
+ | Accept-Encoding: | ||
+ | Authorization: | ||
+ | Content-Type: | ||
+ | |||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | == Response: == | ||
+ | < | ||
+ | HTTP/1.1 200 OK | ||
+ | Allow: POST, OPTIONS | ||
+ | Content-Encoding: | ||
+ | Content-Type: | ||
+ | |||
+ | { | ||
+ | " | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | ] | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | The **threshold** field accepts values between 0.7 and 1.0, the default is 0.9. | ||
+ | |||
+ | The **limit** field accepts values between 1 and 1000, the default is 100. | ||
+ | |||
+ | |||
+ | ===== Substructure search ===== | ||
+ | Substructure search currently accepts the following input identifiers: | ||
+ | |||
+ | == Endpoint: == | ||
+ | < | ||
+ | |||
+ | == Example API request: == | ||
+ | < | ||
+ | echo ' | ||
+ | </ | ||
+ | |||
+ | == Request: == | ||
+ | < | ||
+ | POST / | ||
+ | Accept: application/ | ||
+ | Accept-Encoding: | ||
+ | Authorization: | ||
+ | Content-Type: | ||
+ | |||
+ | { | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | == Response: == | ||
+ | < | ||
+ | HTTP/1.1 200 OK | ||
+ | Allow: POST, OPTIONS | ||
+ | Content-Encoding: | ||
+ | Content-Type: | ||
+ | |||
+ | { | ||
+ | " | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | ] | ||
+ | } | ||
</ | </ | ||
+ | The **limit** field accepts values between 1 and 1000, the default is 100. | ||
Line 644: | Line 1059: | ||
* **target_volume**: | * **target_volume**: | ||
* **target_cc**: | * **target_cc**: | ||
- | * **extra_amount**: | + | * **extra_amount**: |
+ | * **min_extra_amount**: | ||
* **customer_email**: | * **customer_email**: | ||
* **delivery_time**: | * **delivery_time**: | ||
Line 650: | Line 1066: | ||
* **higher_amounts**: | * **higher_amounts**: | ||
* **item_filters**: | * **item_filters**: | ||
+ | * **scheme**: If you have access to predefined / pre-negotiated quote request schemes, you can specify here which one you want to use. You have to send the ID of the scheme which will be provided to you after negotiation. A quote query scheme is essentially a template that contains predefined quote query parameters, or even include private parameters that affect quote generation in various ways (e.g.: discounts, predefined custom prices). These parameters can be customized for your use case. The scheme might already contain mandatory fields like delivery_country. In this case you don't have to specify them again, they will be applied from the scheme. Any explicitly specified public parameter during the request will override the one that comes from the specified scheme. | ||
The **amount** or target concentration-volume pair (**target_volume** and **target_cc**) need to be specified. | The **amount** or target concentration-volume pair (**target_volume** and **target_cc**) need to be specified. | ||
Line 713: | Line 1130: | ||
" | " | ||
" | " | ||
- | " | + | " |
+ | " | ||
" | " | ||
" | " | ||
Line 783: | Line 1201: | ||
" | " | ||
" | " | ||
+ | " | ||
" | " | ||
" | " | ||
Line 960: | Line 1379: | ||
{ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
" | " | ||
" | " | ||
Line 1023: | Line 1445: | ||
" | " | ||
" | " | ||
+ | " | ||
+ | " | ||
" | " | ||
" | " | ||
Line 1029: | Line 1453: | ||
" | " | ||
" | " | ||
+ | " | ||
" | " | ||
" | " | ||
Line 1040: | Line 1465: | ||
" | " | ||
" | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
" | " | ||
" | " | ||
- | " | ||
" | " | ||
" | " | ||
" | " | ||
" | " | ||
+ | " | ||
" | " | ||
" | " | ||
Line 1059: | Line 1487: | ||
" | " | ||
" | " | ||
+ | " | ||
+ | " | ||
" | " | ||
" | " | ||
Line 1065: | Line 1495: | ||
" | " | ||
" | " | ||
+ | " | ||
" | " | ||
" | " | ||
Line 1077: | Line 1508: | ||
" | " | ||
" | " | ||
+ | " | ||
+ | " | ||
" | " | ||
" | " | ||
Line 1083: | Line 1516: | ||
" | " | ||
" | " | ||
+ | " | ||
" | " | ||
" | " | ||
Line 1095: | Line 1529: | ||
" | " | ||
" | " | ||
+ | " | ||
+ | " | ||
" | " | ||
" | " | ||
Line 1101: | Line 1537: | ||
" | " | ||
" | " | ||
+ | " | ||
" | " | ||
" | " | ||
Line 1166: | Line 1603: | ||
" | " | ||
" | " | ||
+ | " | ||
" | " | ||
" | " | ||
Line 1257: | Line 1695: | ||
Where currency is not specified, it is always USD. | Where currency is not specified, it is always USD. | ||
+ | * **additional_document_notes**: | ||
+ | * **amount_range**: | ||
+ | * **amount_range_display**: | ||
* **analytical_services_price**: | * **analytical_services_price**: | ||
* **avg_product_price**: | * **avg_product_price**: | ||
Line 1280: | Line 1721: | ||
* **effective_price_display**: | * **effective_price_display**: | ||
* **price**: effective price | * **price**: effective price | ||
+ | * **product_available_amount**: | ||
+ | * **product_available_amount_display**: | ||
* **product_mcule_id**: | * **product_mcule_id**: | ||
* **product**: | * **product**: | ||
Line 1286: | Line 1729: | ||
* **product_price**: | * **product_price**: | ||
* **product_purity**: | * **product_purity**: | ||
+ | * **product_smiles**: | ||
* **structure_origin_mcule_id**: | * **structure_origin_mcule_id**: | ||
* **quote**: The ID of the quote this product level quote data belongs to. | * **quote**: The ID of the quote this product level quote data belongs to. | ||
* **name**: The name of the quote. Quotes created via the API don't have names. | * **name**: The name of the quote. Quotes created via the API don't have names. | ||
- | * **order_data**: | + | * **order_data**: |
+ | * **billing_address**: | ||
+ | * **billing_city**: | ||
+ | * **billing_company_name**: | ||
+ | * **billing_country**: | ||
+ | * **billing_post_code**: | ||
+ | * **billing_state**: | ||
+ | * **billing_email**: | ||
+ | * **billing_first_name**: | ||
+ | * **billing_last_name**: | ||
+ | * **billing_phone**: | ||
+ | * **billing_same**: | ||
+ | * **billing_vat**: | ||
+ | * **shipping_address**: | ||
+ | * **shipping_city**: | ||
+ | * **shipping_company_name**: | ||
+ | * **shipping_country**: | ||
+ | * **shipping_post_code**: | ||
+ | * **shipping_state**: | ||
+ | * **shipping_email**: | ||
+ | * **shipping_first_name**: | ||
+ | * **shipping_last_name**: | ||
+ | * **shipping_phone**: | ||
+ | * **notes**: notes | ||
+ | * **po_number**: | ||
+ | * **po_file_filename**: | ||
+ | * **po_option**: | ||
+ | * **po_option_display**: | ||
+ | * **created**: | ||
+ | * **updated**: | ||
+ | * **id**: ID of the purchase order data | ||
* **payment_due_days**: | * **payment_due_days**: | ||
* **price**: Total price of quote (USD) | * **price**: Total price of quote (USD) | ||
Line 1386: | Line 1860: | ||
</ | </ | ||
+ | |||
+ | ===== Quote order ===== | ||
+ | |||
+ | Submit purchase order for a quote via API. | ||
+ | |||
+ | < | ||
+ | http --form POST https:// | ||
+ | </ | ||
+ | |||
+ | == Example request: === | ||
+ | < | ||
+ | POST / | ||
+ | Accept: */* | ||
+ | Accept-Encoding: | ||
+ | Authorization: | ||
+ | Content-Type: | ||
+ | |||
+ | +-----------------------------------------+ | ||
+ | | NOTE: binary data not shown in terminal | | ||
+ | +-----------------------------------------+ | ||
+ | </ | ||
+ | |||
+ | Please note that in case you submit a file in the API request, you have to use // | ||
+ | |||
+ | If you don't submit a file in the API request, you can use // | ||
+ | |||
+ | < | ||
+ | echo ' | ||
+ | </ | ||
+ | |||
+ | == Example request: === | ||
+ | < | ||
+ | POST / | ||
+ | Accept: application/ | ||
+ | Authorization: | ||
+ | Content-Type: | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Mandatory fields: | ||
+ | * **po_option**: | ||
+ | |||
+ | Optional fields: | ||
+ | * **billing_address**: | ||
+ | * **billing_city**: | ||
+ | * **billing_company_name**: | ||
+ | * **billing_country**: | ||
+ | * **billing_post_code**: | ||
+ | * **billing_state**: | ||
+ | * **billing_email**: | ||
+ | * **billing_first_name**: | ||
+ | * **billing_last_name**: | ||
+ | * **billing_phone**: | ||
+ | * **billing_same**: | ||
+ | * **billing_vat**: | ||
+ | * **shipping_address**: | ||
+ | * **shipping_city**: | ||
+ | * **shipping_company_name**: | ||
+ | * **shipping_country**: | ||
+ | * **shipping_post_code**: | ||
+ | * **shipping_state**: | ||
+ | * **shipping_email**: | ||
+ | * **shipping_first_name**: | ||
+ | * **shipping_last_name**: | ||
+ | * **shipping_phone**: | ||
+ | * **notes**: notes | ||
+ | * **po_number**: | ||
+ | * **po_file**: | ||
+ | |||
+ | The address and contact fields are optional if this information is included in the Purchase Order document or will be provided later to our support team. Although providing the shipping and billing address / contact information here can speed up the ordering process, if you decide to leave them empty, our support team will contact you to reconcile this information. | ||
+ | |||
+ | Subsequent calls to this same endpoint make it possible to update the purchase order information. You can also report incorrect data at order@mcule.com. Please make sure you reference the quote' | ||
api.txt · Last modified: 2024/05/10 08:12 by bkovats