Manages products and the prices, media, and attributes used to sell them.
Products are reusable catalog records. Publishing controls availability to public purchasing surfaces; archiving retires a product without rewriting historical orders that reference it.
Summary
Functions
Creates a new price for an existing product owned by the authenticated application. Key points: - The target product must belong to your authenticated application - Archived products cannot accept new prices - The response returns the created price only
Archive a product and mark it inactive. Archive blocks /products/add_price, but the current API still permits lookup, update, publish, catalog-ID order snapshots, and purchase-intent resolution for the product.
Creates a new product in your catalog. Products represent items you sell—physical goods, digital downloads, services, or subscriptions. Each product includes pricing, description, and fulfillment details. Product types: - physical: Tangible goods requiring shipping (requires shipment details) - digital: Electronic content (e-books, software, media) delivered via download/stream - service: Intangible offerings (consulting, subscriptions, memberships) - voucher: Gift cards, credits, or promotional codes - custom: Custom product types for specialized use cases - cause: Donation or charitable contribution products
Retrieves a product's details by ID. Returns the complete product record including pricing, description, category, shipment details, and all metadata.
Retrieve a paginated list of products for the authenticated application. No response ordering is guaranteed.
Mark a product active and record its publication time. Publishing can also reactivate an archived product; the archive timestamp remains part of its history.
Mark a product inactive for catalog lifecycle purposes. Existing prices and purchase intents are not disabled by this operation.
Update the mutable description, classification, fulfillment, dimension, media, attribute, and custom-data fields of an existing product. If type is supplied, it must equal the existing type. images and media are mutually exclusive. Inline price updates are not supported; use the Prices API. An ID-only request succeeds without changing the product, and archived products can still be updated.
Functions
@spec add_price(Inttegro.Client.t(), Inttegro.Products.AddPriceRequest.t(), keyword()) :: {:ok, Inttegro.Prices.Catalog.t()} | {:error, Exception.t()}
Creates a new price for an existing product owned by the authenticated application. Key points: - The target product must belong to your authenticated application - Archived products cannot accept new prices - The response returns the created price only
Parameters
client— an authenticatedInttegro.Client.request— aInttegro.Products.AddPriceRequestcontaining the operation input.options— request options such as:idempotency_keyand additional:headers.
Returns
Returns {:ok, Inttegro.Prices.Catalog.t()} when Inttegro accepts and decodes the operation. Returns
{:error, exception} for API, transport, or decoding failures. A successful API response can
still describe an asynchronous resource that has not reached its terminal state.
Example
request = Inttegro.Products.AddPriceRequest.new!(request_attributes)
case Inttegro.Products.add_price(client, request) do
{:ok, result} -> result
{:error, error} -> {:error, error}
end
@spec archive(Inttegro.Client.t(), Inttegro.Products.ActionRequest.t(), keyword()) :: {:ok, Inttegro.Products.Product.t()} | {:error, Exception.t()}
Archive a product and mark it inactive. Archive blocks /products/add_price, but the current API still permits lookup, update, publish, catalog-ID order snapshots, and purchase-intent resolution for the product.
Parameters
client— an authenticatedInttegro.Client.request— aInttegro.Products.ActionRequestcontaining the operation input.options— request options such as:idempotency_keyand additional:headers.
Returns
Returns {:ok, Inttegro.Products.Product.t()} when Inttegro accepts and decodes the operation. Returns
{:error, exception} for API, transport, or decoding failures. A successful API response can
still describe an asynchronous resource that has not reached its terminal state.
Example
request = Inttegro.Products.ActionRequest.new!(request_attributes)
case Inttegro.Products.archive(client, request) do
{:ok, result} -> result
{:error, error} -> {:error, error}
end
@spec create(Inttegro.Client.t(), Inttegro.Products.CreateRequest.t(), keyword()) :: {:ok, Inttegro.Products.Product.t()} | {:error, Exception.t()}
Creates a new product in your catalog. Products represent items you sell—physical goods, digital downloads, services, or subscriptions. Each product includes pricing, description, and fulfillment details. Product types: - physical: Tangible goods requiring shipping (requires shipment details) - digital: Electronic content (e-books, software, media) delivered via download/stream - service: Intangible offerings (consulting, subscriptions, memberships) - voucher: Gift cards, credits, or promotional codes - custom: Custom product types for specialized use cases - cause: Donation or charitable contribution products
Parameters
client— an authenticatedInttegro.Client.request— aInttegro.Products.CreateRequestcontaining the operation input.options— request options such as:idempotency_keyand additional:headers.
Returns
Returns {:ok, Inttegro.Products.Product.t()} when Inttegro accepts and decodes the operation. Returns
{:error, exception} for API, transport, or decoding failures. A successful API response can
still describe an asynchronous resource that has not reached its terminal state.
Example
request = Inttegro.Products.CreateRequest.new!(request_attributes)
case Inttegro.Products.create(client, request) do
{:ok, result} -> result
{:error, error} -> {:error, error}
end
@spec lookup(Inttegro.Client.t(), Inttegro.Products.LookupRequest.t(), keyword()) :: {:ok, Inttegro.Products.Product.t()} | {:error, Exception.t()}
Retrieves a product's details by ID. Returns the complete product record including pricing, description, category, shipment details, and all metadata.
Parameters
client— an authenticatedInttegro.Client.request— aInttegro.Products.LookupRequestcontaining the operation input.options— request options such as:idempotency_keyand additional:headers.
Returns
Returns {:ok, Inttegro.Products.Product.t()} when Inttegro accepts and decodes the operation. Returns
{:error, exception} for API, transport, or decoding failures. A successful API response can
still describe an asynchronous resource that has not reached its terminal state.
Example
request = Inttegro.Products.LookupRequest.new!(request_attributes)
case Inttegro.Products.lookup(client, request) do
{:ok, result} -> result
{:error, error} -> {:error, error}
end
@spec page(Inttegro.Client.t(), Inttegro.Products.PageRequest.t(), keyword()) :: {:ok, Inttegro.Products.Page.t()} | {:error, Exception.t()}
Retrieve a paginated list of products for the authenticated application. No response ordering is guaranteed.
Parameters
client— an authenticatedInttegro.Client.request— aInttegro.Products.PageRequestcontaining the operation input.options— request options such as:idempotency_keyand additional:headers.
Returns
Returns {:ok, Inttegro.Products.Page.t()} when Inttegro accepts and decodes the operation. Returns
{:error, exception} for API, transport, or decoding failures. A successful API response can
still describe an asynchronous resource that has not reached its terminal state.
Example
request = Inttegro.Products.PageRequest.new!(request_attributes)
case Inttegro.Products.page(client, request) do
{:ok, result} -> result
{:error, error} -> {:error, error}
end
@spec publish(Inttegro.Client.t(), Inttegro.Products.ActionRequest.t(), keyword()) :: {:ok, Inttegro.Products.Product.t()} | {:error, Exception.t()}
Mark a product active and record its publication time. Publishing can also reactivate an archived product; the archive timestamp remains part of its history.
Parameters
client— an authenticatedInttegro.Client.request— aInttegro.Products.ActionRequestcontaining the operation input.options— request options such as:idempotency_keyand additional:headers.
Returns
Returns {:ok, Inttegro.Products.Product.t()} when Inttegro accepts and decodes the operation. Returns
{:error, exception} for API, transport, or decoding failures. A successful API response can
still describe an asynchronous resource that has not reached its terminal state.
Example
request = Inttegro.Products.ActionRequest.new!(request_attributes)
case Inttegro.Products.publish(client, request) do
{:ok, result} -> result
{:error, error} -> {:error, error}
end
@spec unpublish(Inttegro.Client.t(), Inttegro.Products.ActionRequest.t(), keyword()) :: {:ok, Inttegro.Products.Product.t()} | {:error, Exception.t()}
Mark a product inactive for catalog lifecycle purposes. Existing prices and purchase intents are not disabled by this operation.
Parameters
client— an authenticatedInttegro.Client.request— aInttegro.Products.ActionRequestcontaining the operation input.options— request options such as:idempotency_keyand additional:headers.
Returns
Returns {:ok, Inttegro.Products.Product.t()} when Inttegro accepts and decodes the operation. Returns
{:error, exception} for API, transport, or decoding failures. A successful API response can
still describe an asynchronous resource that has not reached its terminal state.
Example
request = Inttegro.Products.ActionRequest.new!(request_attributes)
case Inttegro.Products.unpublish(client, request) do
{:ok, result} -> result
{:error, error} -> {:error, error}
end
@spec update(Inttegro.Client.t(), Inttegro.Products.UpdateRequest.t(), keyword()) :: {:ok, Inttegro.Products.Product.t()} | {:error, Exception.t()}
Update the mutable description, classification, fulfillment, dimension, media, attribute, and custom-data fields of an existing product. If type is supplied, it must equal the existing type. images and media are mutually exclusive. Inline price updates are not supported; use the Prices API. An ID-only request succeeds without changing the product, and archived products can still be updated.
Parameters
client— an authenticatedInttegro.Client.request— aInttegro.Products.UpdateRequestcontaining the operation input.options— request options such as:idempotency_keyand additional:headers.
Returns
Returns {:ok, Inttegro.Products.Product.t()} when Inttegro accepts and decodes the operation. Returns
{:error, exception} for API, transport, or decoding failures. A successful API response can
still describe an asynchronous resource that has not reached its terminal state.
Example
request = Inttegro.Products.UpdateRequest.new!(request_attributes)
case Inttegro.Products.update(client, request) do
{:ok, result} -> result
{:error, error} -> {:error, error}
end