# UpdateSiteCatalog

Add strategies to, or remove strategies from, your White Label site's catalog — the API version of the console's add/remove-strategy toggle. Send a list of StrategyIds (1 to 100 per call) with Action "Add" or "Remove", and get a per-strategy result back. The operation is idempotent: a strategy already in the requested state is reported as a success ("already_in_catalog" / "not_in_catalog"), so replays are safe. Removal is refused per-strategy while the strategy still has active paid subscribers who are customers of your site (the result carries the count); simulated subscriptions never block removal. The site is the one your API key belongs to; C2 admin keys may pass WhiteLabelSiteId to manage any site. Non-Paginated endpoint.

Endpoint: POST /Strategies/UpdateSiteCatalog
Version: v4
Security: 

## Request fields (application/json):

  - `Action` (string,null)
    "Add" to offer the strategies on your site, "Remove" to stop offering them

  - `StrategyIds` (array,null)
    A list of StrategyIds to add or remove. Between 1 and 100 unique strategies may be requested per call.

## Response 200 fields (application/json):

  - `Results` (array,null)
    Result array

  - `Results.StrategyId` (integer)
    The StrategyId this result is for

  - `Results.Ok` (boolean)
    True when the strategy is now in the requested state — whether this call changed it or it was already there. False on a refusal (see Reason)

  - `Results.Status` (string,null)
    What happened: "added" (now offered on your site), "already_in_catalog" (idempotent add no-op), "removed" (no longer offered), "not_in_catalog" (idempotent remove no-op), or "refused" (see Reason). Branch on this code, never on Message prose

  - `Results.Reason` (string,null)
    Refusal reason when Status is "refused": "unknown_strategy" (no such strategy), "not_resellable" (the strategy is not offered for reselling), "not_visible_on_parent_site" (your catalog is limited to a parent site's selection and the parent does not offer it), "active_subscribers" (removal refused while the strategy still has active paid subscribers who are customers of your site — see ActiveSubscribers; simulated subscriptions never block removal), or "internal_error" (a transient server error on this strategy only — the rest of the batch was processed; retry this strategy)

  - `Results.Message` (string,null)
    Human-readable detail for a refusal

  - `Results.ActiveSubscribers` (integer,null)
    On an "active_subscribers" refusal: how many active paid subscribers from your site still follow the strategy. Null otherwise

  - `ResponseStatus` (object)

  - `ResponseStatus.ErrorCode` (string,null)
    The HTTP error code. Please see https://api-docs.collective2.com/guides/error-codes#http-errors.

  - `ResponseStatus.Message` (string,null)
    The human-readable meaning of the ErrorCode.

  - `ResponseStatus.Errors` (array,null)

  - `ResponseStatus.Errors.ErrorCode` (string,null)
    The C2 error code. Please see https://api-docs.collective2.com/guides/error-codes#c2-errors.

  - `ResponseStatus.Errors.FieldName` (string,null)
    The affected parameter.

  - `ResponseStatus.Errors.Message` (string,null)
    More details about the ErrorCode.

## Response 400 fields (application/json):

  - `ErrorCode` (string,null)
    The HTTP error code. Please see https://api-docs.collective2.com/guides/error-codes#http-errors.

  - `Message` (string,null)
    The human-readable meaning of the ErrorCode.

  - `Errors` (array,null)

  - `Errors.ErrorCode` (string,null)
    The C2 error code. Please see https://api-docs.collective2.com/guides/error-codes#c2-errors.

  - `Errors.FieldName` (string,null)
    The affected parameter.

  - `Errors.Message` (string,null)
    More details about the ErrorCode.

## Response 401 fields (application/json):

  - `ErrorCode` (string,null)
    The HTTP error code. Please see https://api-docs.collective2.com/guides/error-codes#http-errors.

  - `Message` (string,null)
    The human-readable meaning of the ErrorCode.

  - `Errors` (array,null)

  - `Errors.ErrorCode` (string,null)
    The C2 error code. Please see https://api-docs.collective2.com/guides/error-codes#c2-errors.

  - `Errors.FieldName` (string,null)
    The affected parameter.

  - `Errors.Message` (string,null)
    More details about the ErrorCode.

## Response 403 fields (application/json):

  - `ErrorCode` (string,null)
    The HTTP error code. Please see https://api-docs.collective2.com/guides/error-codes#http-errors.

  - `Message` (string,null)
    The human-readable meaning of the ErrorCode.

  - `Errors` (array,null)

  - `Errors.ErrorCode` (string,null)
    The C2 error code. Please see https://api-docs.collective2.com/guides/error-codes#c2-errors.

  - `Errors.FieldName` (string,null)
    The affected parameter.

  - `Errors.Message` (string,null)
    More details about the ErrorCode.

## Response 406 fields (application/json):

  - `ErrorCode` (string,null)
    The HTTP error code. Please see https://api-docs.collective2.com/guides/error-codes#http-errors.

  - `Message` (string,null)
    The human-readable meaning of the ErrorCode.

  - `Errors` (array,null)

  - `Errors.ErrorCode` (string,null)
    The C2 error code. Please see https://api-docs.collective2.com/guides/error-codes#c2-errors.

  - `Errors.FieldName` (string,null)
    The affected parameter.

  - `Errors.Message` (string,null)
    More details about the ErrorCode.

## Response 409 fields (application/json):

  - `ErrorCode` (string,null)
    The HTTP error code. Please see https://api-docs.collective2.com/guides/error-codes#http-errors.

  - `Message` (string,null)
    The human-readable meaning of the ErrorCode.

  - `Errors` (array,null)

  - `Errors.ErrorCode` (string,null)
    The C2 error code. Please see https://api-docs.collective2.com/guides/error-codes#c2-errors.

  - `Errors.FieldName` (string,null)
    The affected parameter.

  - `Errors.Message` (string,null)
    More details about the ErrorCode.

## Response 429 fields (application/json):

  - `ErrorCode` (string,null)
    The HTTP error code. Please see https://api-docs.collective2.com/guides/error-codes#http-errors.

  - `Message` (string,null)
    The human-readable meaning of the ErrorCode.

  - `Errors` (array,null)

  - `Errors.ErrorCode` (string,null)
    The C2 error code. Please see https://api-docs.collective2.com/guides/error-codes#c2-errors.

  - `Errors.FieldName` (string,null)
    The affected parameter.

  - `Errors.Message` (string,null)
    More details about the ErrorCode.

## Response 500 fields (application/json):

  - `ErrorCode` (string,null)
    The HTTP error code. Please see https://api-docs.collective2.com/guides/error-codes#http-errors.

  - `Message` (string,null)
    The human-readable meaning of the ErrorCode.

  - `Errors` (array,null)

  - `Errors.ErrorCode` (string,null)
    The C2 error code. Please see https://api-docs.collective2.com/guides/error-codes#c2-errors.

  - `Errors.FieldName` (string,null)
    The affected parameter.

  - `Errors.Message` (string,null)
    More details about the ErrorCode.

## Response 503 fields (application/json):

  - `ErrorCode` (string,null)
    The HTTP error code. Please see https://api-docs.collective2.com/guides/error-codes#http-errors.

  - `Message` (string,null)
    The human-readable meaning of the ErrorCode.

  - `Errors` (array,null)

  - `Errors.ErrorCode` (string,null)
    The C2 error code. Please see https://api-docs.collective2.com/guides/error-codes#c2-errors.

  - `Errors.FieldName` (string,null)
    The affected parameter.

  - `Errors.Message` (string,null)
    More details about the ErrorCode.


