# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand. overlay: 1.0.0 info: title: API Evangelist conversational phrasing for Admin API V1 Customer Product Visibility Exceptions API version: 1.0.0 extends: openapi/optimizely-customer-product-visibility-exceptions-api-openapi.yml actions: - target: $.info update: x-apievangelist-phrasing: method: generated generated: '2026-09-26' generator: build-phrasing.py label: Generated by API Evangelist operations: 9 - target: $.paths['/api/v1/admin/CustomerProductVisibilityExceptions'].get update: x-apievangelist-phrasing: intent: List customer product visibility exceptions effect: read questions: - Which products are hidden from specific customers? - How do I see all customer product visibility exceptions? instructions: - text: List all customer product visibility exceptions. - text: Show every product hidden from a customer. method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/CustomerProductVisibilityExceptions'].post update: x-apievangelist-phrasing: intent: Hide a product from a customer effect: write questions: - How do I stop a specific customer from seeing a product? - Can I add a product visibility exception for one customer? instructions: - text: Hide product {productId} from customer {customerId}. slots: productId: requestBody.productId customerId: requestBody.customerId - text: Create a visibility exception so customer {customerId} cannot see product {productId}. slots: customerId: requestBody.customerId productId: requestBody.productId method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/CustomerProductVisibilityExceptions({id})'].get update: x-apievangelist-phrasing: intent: Get a visibility exception effect: read questions: - Is there a call to read a single product visibility exception by ID? - Which customer and product does a given exception link? instructions: - text: Get visibility exception {id}. slots: id: path.id - text: Show the customer and product on exception {id}. slots: id: path.id method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/CustomerProductVisibilityExceptions({id})'].put update: x-apievangelist-phrasing: intent: Replace a visibility exception effect: write questions: - What's the call to overwrite a product visibility exception record? - Can I fully replace which customer and product an exception covers? instructions: - text: Replace visibility exception {id} with customer {customerId} and product {productId}. slots: id: path.id customerId: requestBody.customerId productId: requestBody.productId - text: Overwrite exception {id} in full so it hides product {productId}. slots: id: path.id productId: requestBody.productId method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/CustomerProductVisibilityExceptions({id})'].delete update: x-apievangelist-phrasing: intent: Unhide a product for a customer effect: destructive questions: - How do I remove a visibility exception so the customer can see the product again? - Can I delete a visibility exception conditionally with an ETag? instructions: - text: Delete visibility exception {id}. slots: id: path.id - text: Delete exception {id} if its ETag matches {etag}. slots: id: path.id etag: header.If-Match method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/CustomerProductVisibilityExceptions({id})'].patch update: x-apievangelist-phrasing: intent: Update a visibility exception effect: write questions: - How do I point an existing visibility exception at a different product? - Can I switch the customer on a visibility exception? instructions: - text: Change visibility exception {id} to product {productId}. slots: id: path.id productId: requestBody.productId - text: Move exception {id} to customer {customerId}. slots: id: path.id customerId: requestBody.customerId method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/CustomerProductVisibilityExceptions/Default.Default()'].get update: x-apievangelist-phrasing: intent: Get the default visibility exception effect: read questions: - What does a blank customer product visibility exception look like? - Where can I get default values for a new visibility exception? instructions: - text: Get the default visibility exception template. - text: Show default fields for a new product visibility exception. method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/customerproductvisibilityexceptions/delete'].delete update: x-apievangelist-phrasing: intent: Bulk delete visibility exceptions effect: destructive questions: - Can I remove many product visibility exceptions at once? - Can I bulk unhide products by deleting exceptions by ID? instructions: - text: Bulk delete visibility exceptions {ids}. slots: ids: query.ids - text: 'Remove these product visibility exceptions: {ids}.' slots: ids: query.ids method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/customerproductvisibilityexceptions({key})/customproperties({custompropertyKey})'].get update: x-apievangelist-phrasing: intent: Get a custom property on a visibility exception effect: read questions: - Where would I read a custom property on a product visibility exception? - Can I fetch an extra attribute stored on a visibility exception? instructions: - text: Get custom property {prop} on visibility exception {key}. slots: key: path.key prop: path.custompropertyKey - text: Show custom field {prop} for visibility exception {key}. slots: key: path.key prop: path.custompropertyKey method: generated generated: '2026-09-26'