> ## Documentation Index
> Fetch the complete documentation index at: https://learn.nexudus.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get one CoworkerProduct

> Retrieve a single CoworkerProduct record by its Id.

A **CoworkerProduct** is a record of a product sold to a customer as a one-off or on a recurrent basis.

`RepeatCycle` can only be set to `PricePlan` if the customer has a contract set as their main contract. In general, it is best to use `ContractProduct` instead of adding CoworkerProducts repeating based on `PricePlan`.

`InvoiceThisCoworker` indicates this customer should be invoiced for this product instead of the paying member of their team.

`ActivateNow` releases any benefits (credits or passes) even before the product is invoiced and paid.

`ProductApplyProRating` indicates the sold product is configured to prorate the price of this sale based on the prorating rules of the main contract of the customer: it adjusts the price based on the number of days left between the current date and the next invoice date (`RenewalDate`) of the customer's main contract.

Properties ending in `UniqueId` link the sale to the originating record using its GUID `UniqueId` property (not the integer ID). Only one of these will be populated per record:

| UniqueId property          | Source entity    |
| -------------------------- | ---------------- |
| `CoworkerContractUniqueId` | CoworkerContract |
| `ContractDepositUniqueId`  | ContractDeposit  |
| `ContractProductUniqueId`  | ContractProduct  |
| `BookingUniqueId`          | Booking          |
| `CoworkerDeliveryUniqueId` | CoworkerDelivery |

## Authentication

<Note>
  This endpoint requires OAuth2 authentication. Include a valid bearer token in the `Authorization` header.
  The authenticated user must be a full unrestricted administrator or have the **`CoworkerProduct-Read`** role.
</Note>

## Path Parameters

<ParamField path="id" type="integer" required>
  The Id of the CoworkerProduct record to retrieve.
</ParamField>

## Code Examples

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET \
    "https://spaces.nexudus.com/api/billing/coworkerproducts/87654321" \
    -H "Authorization: Bearer YOUR_TOKEN"
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    'https://spaces.nexudus.com/api/billing/coworkerproducts/87654321',
    {
      headers: {
        'Authorization': 'Bearer YOUR_TOKEN'
      }
    }
  );

  const record = await response.json();
  ```

  ```python Python theme={null}
  import requests

  response = requests.get(
      'https://spaces.nexudus.com/api/billing/coworkerproducts/87654321',
      headers={
          'Authorization': 'Bearer YOUR_TOKEN'
      }
  )

  record = response.json()
  ```
</CodeGroup>

## Response

### 200

<ResponseField name="CoworkerId" type="integer">
  Coworker Id.
</ResponseField>

<ResponseField name="CoworkerCoworkerType" type="string">
  Coworker type.
</ResponseField>

<ResponseField name="CoworkerFullName" type="string">
  Coworker full name.
</ResponseField>

<ResponseField name="CoworkerCompanyName" type="string">
  Coworker company name.
</ResponseField>

<ResponseField name="CoworkerBillingName" type="string">
  Coworker billing name.
</ResponseField>

<ResponseField name="CoworkerEmail" type="string">
  Coworker email.
</ResponseField>

<ResponseField name="BusinessId" type="integer">
  Business Id.
</ResponseField>

<ResponseField name="ProductId" type="integer">
  Product Id.
</ResponseField>

<ResponseField name="ProductName" type="string">
  Product name.
</ResponseField>

<ResponseField name="ProductPrice" type="number">
  Product price.
</ResponseField>

<ResponseField name="ProductApplyProRating" type="string">
  Whether the sold product is configured to prorate the price of this sale based on the prorating rules of the customer's main contract, adjusting the price based on the number of days left until the next invoice date (RenewalDate).
</ResponseField>

<ResponseField name="ProductCurrencyCode" type="string">
  Product currency code.
</ResponseField>

<ResponseField name="Notes" type="string">
  Notes.
</ResponseField>

<ResponseField name="PurchaseOrder" type="string">
  Purchase order.
</ResponseField>

<ResponseField name="OrderNumber" type="string">
  Order number.
</ResponseField>

<ResponseField name="Activated" type="boolean">
  Whether the product is activated.
</ResponseField>

<ResponseField name="ActivateNow" type="boolean">
  Activate immediately, releasing any benefits (credits or passes) even before the product is invoiced and paid.
</ResponseField>

<ResponseField name="InvoiceThisCoworker" type="boolean">
  Invoice this customer for this product instead of the paying member of their team.
</ResponseField>

<ResponseField name="Price" type="number">
  Price override.
</ResponseField>

<ResponseField name="Quantity" type="integer">
  Quantity.
</ResponseField>

<ResponseField name="RegularCharge" type="boolean">
  Whether this is a regular charge.
</ResponseField>

<ResponseField name="RepeatCycle" type="integer">
  Repeat cycle pattern. PricePlan can only be used if the customer has a main contract; prefer ContractProduct instead of CoworkerProducts repeating on PricePlan. See `eRecurrentChargePattern` enum values: `1` = PricePlan, `2` = Day, `3` = Week, `4` = Month, `5` = Year, `6` = LastDayOfMonth.
</ResponseField>

<ResponseField name="RepeatUnit" type="integer">
  Number of repeat units.
</ResponseField>

<ResponseField name="InvoiceOn" type="string">
  Invoice on date.
</ResponseField>

<ResponseField name="RepeatFrom" type="string">
  Repeat from date.
</ResponseField>

<ResponseField name="RepeatUntil" type="string">
  Repeat until date.
</ResponseField>

<ResponseField name="SaleDate" type="string">
  Sale date.
</ResponseField>

<ResponseField name="DueDate" type="string">
  Due date.
</ResponseField>

<ResponseField name="Invoiced" type="boolean">
  Whether it has been invoiced.
</ResponseField>

<ResponseField name="InvoicedOn" type="string">
  Date invoiced.
</ResponseField>

<ResponseField name="FromTariff" type="boolean">
  Whether added from tariff.
</ResponseField>

<ResponseField name="BookingUniqueId" type="string">
  Links to the Booking that generated this sale (GUID UniqueId, not integer ID).
</ResponseField>

<ResponseField name="MrmReminded" type="boolean">
  Mrm Reminded.
</ResponseField>

<ResponseField name="ApplyProRating" type="boolean">
  Apply pro-rating.
</ResponseField>

<ResponseField name="CoworkerContractUniqueId" type="string">
  Links to the CoworkerContract that generated this sale (GUID UniqueId, not integer ID).
</ResponseField>

<ResponseField name="ContractDepositUniqueId" type="string">
  Links to the ContractDeposit that generated this sale (GUID UniqueId, not integer ID).
</ResponseField>

<ResponseField name="ContractProductUniqueId" type="string">
  Links to the ContractProduct that generated this sale (GUID UniqueId, not integer ID).
</ResponseField>

<ResponseField name="CoworkerDeliveryUniqueId" type="string">
  Links to the CoworkerDelivery that generated this sale (GUID UniqueId, not integer ID).
</ResponseField>

<ResponseField name="ProposalUniqueId" type="string">
  Proposal Unique Id.
</ResponseField>

<ResponseField name="CoworkerInvoiceId" type="integer">
  Coworker invoice ID.
</ResponseField>

<ResponseField name="CoworkerInvoiceNumber" type="string">
  Coworker invoice number.
</ResponseField>

<ResponseField name="CoworkerInvoicePaid" type="boolean">
  Whether coworker invoice is paid.
</ResponseField>

<ResponseField name="TeamsAtTheTimeOfPurchase" type="string">
  Teams at the time of purchase.
</ResponseField>

<ResponseField name="CreditAmount" type="number">
  Credit amount.
</ResponseField>

<ResponseField name="DiscountAmount" type="number">
  Discount amount.
</ResponseField>

<ResponseField name="Id" type="integer">
  Unique record identifier.
</ResponseField>

<ResponseField name="UniqueId" type="string">
  UUID of the record.
</ResponseField>

<ResponseField name="CreatedOn" type="string">
  Date and time the record was created (ISO 8601).
</ResponseField>

<ResponseField name="UpdatedOn" type="string">
  Date and time the record was last updated (ISO 8601).
</ResponseField>

<ResponseField name="UpdatedBy" type="string">
  Email of the user who last updated this record.
</ResponseField>

<ResponseField name="IsNew" type="boolean">
  Whether the record was recently created.
</ResponseField>

<ResponseField name="SystemId" type="string">
  External system identifier.
</ResponseField>

```json Example Response theme={null}
{
  "CoworkerId": 0,
  "CoworkerCoworkerType": null,
  "CoworkerFullName": null,
  "CoworkerCompanyName": null,
  "CoworkerBillingName": null,
  "CoworkerEmail": null,
  "BusinessId": 0,
  "ProductId": 0,
  "ProductName": null,
  "ProductPrice": 0,
  "ProductApplyProRating": null,
  "ProductCurrencyCode": null,
  "Notes": null,
  "PurchaseOrder": null,
  "OrderNumber": null,
  "Activated": false,
  "ActivateNow": false,
  "InvoiceThisCoworker": false,
  "Price": null,
  "Quantity": 0,
  "RegularCharge": false,
  "RepeatCycle": 0,
  "RepeatUnit": null,
  "InvoiceOn": null,
  "RepeatFrom": null,
  "RepeatUntil": null,
  "SaleDate": null,
  "DueDate": null,
  "Invoiced": false,
  "InvoicedOn": null,
  "FromTariff": false,
  "BookingUniqueId": null,
  "MrmReminded": false,
  "ApplyProRating": false,
  "CoworkerContractUniqueId": null,
  "ContractDepositUniqueId": null,
  "ContractProductUniqueId": null,
  "CoworkerDeliveryUniqueId": null,
  "ProposalUniqueId": null,
  "CoworkerInvoiceId": null,
  "CoworkerInvoiceNumber": null,
  "CoworkerInvoicePaid": false,
  "TeamsAtTheTimeOfPurchase": null,
  "CreditAmount": 0,
  "DiscountAmount": 0,
  "Id": 87654321,
  "UpdatedOn": "2025-01-15T10:30:00Z",
  "CreatedOn": "2025-01-10T08:00:00Z",
  "UniqueId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "UpdatedBy": "admin@example.com",
  "IsNew": false,
  "SystemId": null,
  "ToStringText": "CoworkerProduct Example",
  "LocalizationDetails": null,
  "CustomFields": null
}
```
