SalesOS

Products

Product catalog management

List

GET
/v1/products

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Query Parameters

typestring
categorystring
isActivestring
searchstring
curl -X GET "https://api.salesos.org/v1/products?type=%3Cstring%3E&category=%3Cstring%3E&isActive=%3Cstring%3E&search=%3Cstring%3E" \
  -H "Authorization: Bearer <token>"

ProductList

{
  "data": [
    {
      "id": "string",
      "ownerId": "string",
      "organizationId": "string",
      "name": "string",
      "sku": "string",
      "description": "string",
      "type": "PRODUCT",
      "category": "SOFTWARE",
      "listPrice": 0,
      "unitPrice": 0,
      "costPrice": 0,
      "currency": "string",
      "billingFrequency": "ONE_TIME",
      "isActive": true,
      "features": [
        "string"
      ],
      "tags": [
        "string"
      ],
      "metadata": null,
      "createdAt": "2019-08-24T14:15:22Z",
      "updatedAt": "2019-08-24T14:15:22Z"
    }
  ],
  "page": 1,
  "limit": 50,
  "total": 0,
  "totalPages": 0,
  "hasMore": true
}

Create

POST
/v1/products

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Request Body

application/jsonRequired
nameRequiredstring
skuRequiredstring
descriptionstring
typestring
Value in: "PRODUCT" | "SERVICE" | "SUBSCRIPTION" | "LICENSE" | "BUNDLE"
categorystring
Value in: "OTHER" | "TRAINING" | "SOFTWARE" | "HARDWARE" | "CONSULTING" | "SUPPORT"
listPriceRequirednumber
Minimum: 0
unitPricenumber
Minimum: 0
costPricenumber
Minimum: 0
currencystring
billingFrequencystring
Value in: "ONE_TIME" | "MONTHLY" | "QUARTERLY" | "ANNUAL" | "USAGE_BASED"
isActiveboolean
featuresarray<string>
tagsarray<string>

Header Parameters

Idempotency-Keystring

Unique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.

Maximum length: 255
curl -X POST "https://api.salesos.org/v1/products" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "string",
    "sku": "string",
    "description": "string",
    "type": "PRODUCT",
    "category": "OTHER",
    "listPrice": 0,
    "unitPrice": 0,
    "costPrice": 0,
    "currency": "string",
    "billingFrequency": "ONE_TIME",
    "isActive": true,
    "features": [
      "string"
    ],
    "tags": [
      "string"
    ]
  }'

Product

{
  "id": "string",
  "ownerId": "string",
  "organizationId": "string",
  "name": "string",
  "sku": "string",
  "description": "string",
  "type": "PRODUCT",
  "category": "SOFTWARE",
  "listPrice": 0,
  "unitPrice": 0,
  "costPrice": 0,
  "currency": "string",
  "billingFrequency": "ONE_TIME",
  "isActive": true,
  "features": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "metadata": null,
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z"
}

Get stats

GET
/v1/products/stats

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

curl -X GET "https://api.salesos.org/v1/products/stats" \
  -H "Authorization: Bearer <token>"

Find one

GET
/v1/products/{id}

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

idRequiredstring
curl -X GET "https://api.salesos.org/v1/products/<string>" \
  -H "Authorization: Bearer <token>"

Product

{
  "id": "string",
  "ownerId": "string",
  "organizationId": "string",
  "name": "string",
  "sku": "string",
  "description": "string",
  "type": "PRODUCT",
  "category": "SOFTWARE",
  "listPrice": 0,
  "unitPrice": 0,
  "costPrice": 0,
  "currency": "string",
  "billingFrequency": "ONE_TIME",
  "isActive": true,
  "features": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "metadata": null,
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z"
}

Update

PATCH
/v1/products/{id}

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Request Body

application/jsonRequired

Path Parameters

idRequiredstring

Header Parameters

Idempotency-Keystring

Unique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.

Maximum length: 255
curl -X PATCH "https://api.salesos.org/v1/products/<string>" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{}'

Product

{
  "id": "string",
  "ownerId": "string",
  "organizationId": "string",
  "name": "string",
  "sku": "string",
  "description": "string",
  "type": "PRODUCT",
  "category": "SOFTWARE",
  "listPrice": 0,
  "unitPrice": 0,
  "costPrice": 0,
  "currency": "string",
  "billingFrequency": "ONE_TIME",
  "isActive": true,
  "features": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "metadata": null,
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z"
}

Remove

DELETE
/v1/products/{id}

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

idRequiredstring
curl -X DELETE "https://api.salesos.org/v1/products/<string>" \
  -H "Authorization: Bearer <token>"

Find by sku

GET
/v1/products/sku/{sku}

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

skuRequiredstring
curl -X GET "https://api.salesos.org/v1/products/sku/<string>" \
  -H "Authorization: Bearer <token>"

{}

Bulk update

POST
/v1/products/bulk/update

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Request Body

application/jsonRequired

Header Parameters

Idempotency-Keystring

Unique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.

Maximum length: 255
curl -X POST "https://api.salesos.org/v1/products/bulk/update" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{}'

{}

Bulk delete

POST
/v1/products/bulk/delete

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Request Body

application/jsonRequired

Header Parameters

Idempotency-Keystring

Unique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.

Maximum length: 255
curl -X POST "https://api.salesos.org/v1/products/bulk/delete" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{}'

{}