Developers
OPDC API Documentation
The OPDC API exposes secure, opinionated endpoints for working with Sage 100 Contractor data. Explore endpoints, view request and response schemas, and test calls directly from the docs.
Query Example — Parts
Retrieve parts matching one or more part numbers, including child records, using the v2 nested filter syntax.
Endpoint
POSThttps://{your-opdc-host}/api/v2/query/part
Headers
x-api-key: {your-api-key}
Content-Type: application/jsonRequest Body
{
"selectFields": ["partNumber", "description", "unitCost"],
"withChildren": true,
"filters": {
"and": [
{
"match": {
"field": "partNumber",
"operator": "in",
"values": ["PIPE-001", "VALVE-200"]
}
}
]
}
}Response
{
"message": "Success",
"page": 1,
"response": [
{
"partNumber": "PIPE-001",
"description": "PVC Pipe 4\"",
"unitCost": 12.50
}
],
"responseType": "part"
}Supported Filter Operators
| Operator | Description | Example Value | Notes |
|---|---|---|---|
| = | Equal to | "PIPE-001" | Exact match |
| != | Not equal to | "PIPE-001" | Excludes exact match |
| > | Greater than | 100 | Numeric or date fields |
| < | Less than | 100 | Numeric or date fields |
| >= | Greater than or equal | 50 | Inclusive lower bound |
| <= | Less than or equal | 50 | Inclusive upper bound |
| LIKE | Pattern match | "PIPE%" | Use % as wildcard |
| NOT LIKE | Negated pattern match | "PIPE%" | Excludes pattern matches |
| IN | Matches any value in list | ["A","B"] | Use values array instead of value |