naftiko: 1.0.0-alpha2 info: label: Knock API — Preferences description: 'Knock API — Preferences. 20 operations. Lead operation: List preference sets. Self-contained Naftiko capability covering one Knock business surface.' tags: - Knock - Preferences created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: KNOCK_API_KEY: KNOCK_API_KEY capability: consumes: - type: http namespace: knock-preferences baseUri: https://api.knock.app description: Knock API — Preferences business capability. Self-contained, no shared references. resources: - name: v1-objects-collection-object_id-preferences path: /v1/objects/{collection}/{object_id}/preferences operations: - name: listobjectpreferencesets method: GET description: List preference sets outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: object_id in: path type: string description: Unique identifier for the object. required: true - name: collection in: path type: string description: The collection this object belongs to. required: true - name: v1-objects-collection-object_id-preferences-id path: /v1/objects/{collection}/{object_id}/preferences/{id} operations: - name: deleteobjectpreferenceset method: DELETE description: Delete object preference set outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: object_id in: path type: string description: Unique identifier for the object. required: true - name: collection in: path type: string description: The collection this object belongs to. required: true - name: id in: path type: string description: Unique identifier for the preference set. required: true - name: getobjectpreferenceset method: GET description: Get object preference set outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: object_id in: path type: string description: Unique identifier for the object. required: true - name: collection in: path type: string description: The collection this object belongs to. required: true - name: id in: path type: string description: Unique identifier for the preference set. required: true - name: updateobjectpreferenceset method: PUT description: Update a preference set outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: object_id in: path type: string description: Unique identifier for the object. required: true - name: collection in: path type: string description: The collection this object belongs to. required: true - name: id in: path type: string description: Unique identifier for the preference set. required: true - name: body in: body type: object description: Request body (JSON). required: true - name: v1-objects-collection-object_id-preferences-id-categories path: /v1/objects/{collection}/{object_id}/preferences/{id}/categories operations: - name: updateobjectpreferencecategories method: PUT description: Update categories in preference set outputRawFormat: json outputParameters: - name: result type: object value: $. - name: v1-objects-collection-object_id-preferences-id-categories-key path: /v1/objects/{collection}/{object_id}/preferences/{id}/categories/{key} operations: - name: updateobjectpreferencecategory method: PUT description: Update a category preference outputRawFormat: json outputParameters: - name: result type: object value: $. - name: v1-objects-collection-object_id-preferences-id-channel_types path: /v1/objects/{collection}/{object_id}/preferences/{id}/channel_types operations: - name: updateobjectpreferencechanneltypes method: PUT description: Update channel types in preference set outputRawFormat: json outputParameters: - name: result type: object value: $. - name: v1-objects-collection-object_id-preferences-id-channel_types-type path: /v1/objects/{collection}/{object_id}/preferences/{id}/channel_types/{type} operations: - name: updateobjectpreferencechanneltype method: PUT description: Update a channel type preference outputRawFormat: json outputParameters: - name: result type: object value: $. - name: v1-objects-collection-object_id-preferences-id-workflows path: /v1/objects/{collection}/{object_id}/preferences/{id}/workflows operations: - name: updateobjectpreferenceworkflows method: PUT description: Update workflows in preference set outputRawFormat: json outputParameters: - name: result type: object value: $. - name: v1-objects-collection-object_id-preferences-id-workflows-key path: /v1/objects/{collection}/{object_id}/preferences/{id}/workflows/{key} operations: - name: updateobjectpreferenceworkflow method: PUT description: Update a workflow preference outputRawFormat: json outputParameters: - name: result type: object value: $. - name: v1-users-user_id-preferences path: /v1/users/{user_id}/preferences operations: - name: listuserpreferencesets method: GET description: List user preference sets outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: user_id in: path type: string description: The unique identifier of the user. required: true - name: v1-users-user_id-preferences-id path: /v1/users/{user_id}/preferences/{id} operations: - name: deleteuserpreferenceset method: DELETE description: Delete user preference set outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: user_id in: path type: string description: The unique identifier of the user. required: true - name: id in: path type: string description: Unique identifier for the preference set. required: true - name: getuserpreferenceset method: GET description: Get user preference set outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: user_id in: path type: string description: The unique identifier of the user. required: true - name: id in: path type: string description: Unique identifier for the preference set. required: true - name: tenant in: query type: string description: The unique identifier for the tenant. - name: updateuserpreferenceset method: PUT description: Update user preference set outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: user_id in: path type: string description: The unique identifier of the user. required: true - name: id in: path type: string description: Unique identifier for the preference set. required: true - name: body in: body type: object description: Request body (JSON). required: true - name: v1-users-user_id-preferences-id-categories path: /v1/users/{user_id}/preferences/{id}/categories operations: - name: updateuserpreferencecategories method: PUT description: Update categories in user preference set outputRawFormat: json outputParameters: - name: result type: object value: $. - name: v1-users-user_id-preferences-id-categories-key path: /v1/users/{user_id}/preferences/{id}/categories/{key} operations: - name: updateuserpreferencecategory method: PUT description: Update category in user preference set outputRawFormat: json outputParameters: - name: result type: object value: $. - name: v1-users-user_id-preferences-id-channel_types path: /v1/users/{user_id}/preferences/{id}/channel_types operations: - name: updateuserpreferencechanneltypes method: PUT description: Update channel types in preference set outputRawFormat: json outputParameters: - name: result type: object value: $. - name: v1-users-user_id-preferences-id-channel_types-type path: /v1/users/{user_id}/preferences/{id}/channel_types/{type} operations: - name: updateuserpreferencechanneltype method: PUT description: Update channel type in preference set outputRawFormat: json outputParameters: - name: result type: object value: $. - name: v1-users-user_id-preferences-id-workflows path: /v1/users/{user_id}/preferences/{id}/workflows operations: - name: updateuserpreferenceworkflows method: PUT description: Update workflows in preference set outputRawFormat: json outputParameters: - name: result type: object value: $. - name: v1-users-user_id-preferences-id-workflows-key path: /v1/users/{user_id}/preferences/{id}/workflows/{key} operations: - name: updateuserpreferenceworkflow method: PUT description: Update workflow in user preference set outputRawFormat: json outputParameters: - name: result type: object value: $. authentication: type: bearer token: '{{env.KNOCK_API_KEY}}' exposes: - type: rest namespace: knock-preferences-rest port: 8080 description: REST adapter for Knock API — Preferences. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/v1/objects/{collection}/{object-id}/preferences name: v1-objects-collection-object-id-preferences description: REST surface for v1-objects-collection-object_id-preferences. operations: - method: GET name: listobjectpreferencesets description: List preference sets call: knock-preferences.listobjectpreferencesets with: object_id: rest.object_id collection: rest.collection outputParameters: - type: object mapping: $. - path: /v1/v1/objects/{collection}/{object-id}/preferences/{id} name: v1-objects-collection-object-id-preferences-id description: REST surface for v1-objects-collection-object_id-preferences-id. operations: - method: DELETE name: deleteobjectpreferenceset description: Delete object preference set call: knock-preferences.deleteobjectpreferenceset with: object_id: rest.object_id collection: rest.collection id: rest.id outputParameters: - type: object mapping: $. - method: GET name: getobjectpreferenceset description: Get object preference set call: knock-preferences.getobjectpreferenceset with: object_id: rest.object_id collection: rest.collection id: rest.id outputParameters: - type: object mapping: $. - method: PUT name: updateobjectpreferenceset description: Update a preference set call: knock-preferences.updateobjectpreferenceset with: object_id: rest.object_id collection: rest.collection id: rest.id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/v1/objects/{collection}/{object-id}/preferences/{id}/categories name: v1-objects-collection-object-id-preferences-id-categories description: REST surface for v1-objects-collection-object_id-preferences-id-categories. operations: - method: PUT name: updateobjectpreferencecategories description: Update categories in preference set call: knock-preferences.updateobjectpreferencecategories outputParameters: - type: object mapping: $. - path: /v1/v1/objects/{collection}/{object-id}/preferences/{id}/categories/{key} name: v1-objects-collection-object-id-preferences-id-categories-key description: REST surface for v1-objects-collection-object_id-preferences-id-categories-key. operations: - method: PUT name: updateobjectpreferencecategory description: Update a category preference call: knock-preferences.updateobjectpreferencecategory outputParameters: - type: object mapping: $. - path: /v1/v1/objects/{collection}/{object-id}/preferences/{id}/channel-types name: v1-objects-collection-object-id-preferences-id-channel-types description: REST surface for v1-objects-collection-object_id-preferences-id-channel_types. operations: - method: PUT name: updateobjectpreferencechanneltypes description: Update channel types in preference set call: knock-preferences.updateobjectpreferencechanneltypes outputParameters: - type: object mapping: $. - path: /v1/v1/objects/{collection}/{object-id}/preferences/{id}/channel-types/{type} name: v1-objects-collection-object-id-preferences-id-channel-types-type description: REST surface for v1-objects-collection-object_id-preferences-id-channel_types-type. operations: - method: PUT name: updateobjectpreferencechanneltype description: Update a channel type preference call: knock-preferences.updateobjectpreferencechanneltype outputParameters: - type: object mapping: $. - path: /v1/v1/objects/{collection}/{object-id}/preferences/{id}/workflows name: v1-objects-collection-object-id-preferences-id-workflows description: REST surface for v1-objects-collection-object_id-preferences-id-workflows. operations: - method: PUT name: updateobjectpreferenceworkflows description: Update workflows in preference set call: knock-preferences.updateobjectpreferenceworkflows outputParameters: - type: object mapping: $. - path: /v1/v1/objects/{collection}/{object-id}/preferences/{id}/workflows/{key} name: v1-objects-collection-object-id-preferences-id-workflows-key description: REST surface for v1-objects-collection-object_id-preferences-id-workflows-key. operations: - method: PUT name: updateobjectpreferenceworkflow description: Update a workflow preference call: knock-preferences.updateobjectpreferenceworkflow outputParameters: - type: object mapping: $. - path: /v1/v1/users/{user-id}/preferences name: v1-users-user-id-preferences description: REST surface for v1-users-user_id-preferences. operations: - method: GET name: listuserpreferencesets description: List user preference sets call: knock-preferences.listuserpreferencesets with: user_id: rest.user_id outputParameters: - type: object mapping: $. - path: /v1/v1/users/{user-id}/preferences/{id} name: v1-users-user-id-preferences-id description: REST surface for v1-users-user_id-preferences-id. operations: - method: DELETE name: deleteuserpreferenceset description: Delete user preference set call: knock-preferences.deleteuserpreferenceset with: user_id: rest.user_id id: rest.id outputParameters: - type: object mapping: $. - method: GET name: getuserpreferenceset description: Get user preference set call: knock-preferences.getuserpreferenceset with: user_id: rest.user_id id: rest.id tenant: rest.tenant outputParameters: - type: object mapping: $. - method: PUT name: updateuserpreferenceset description: Update user preference set call: knock-preferences.updateuserpreferenceset with: user_id: rest.user_id id: rest.id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/v1/users/{user-id}/preferences/{id}/categories name: v1-users-user-id-preferences-id-categories description: REST surface for v1-users-user_id-preferences-id-categories. operations: - method: PUT name: updateuserpreferencecategories description: Update categories in user preference set call: knock-preferences.updateuserpreferencecategories outputParameters: - type: object mapping: $. - path: /v1/v1/users/{user-id}/preferences/{id}/categories/{key} name: v1-users-user-id-preferences-id-categories-key description: REST surface for v1-users-user_id-preferences-id-categories-key. operations: - method: PUT name: updateuserpreferencecategory description: Update category in user preference set call: knock-preferences.updateuserpreferencecategory outputParameters: - type: object mapping: $. - path: /v1/v1/users/{user-id}/preferences/{id}/channel-types name: v1-users-user-id-preferences-id-channel-types description: REST surface for v1-users-user_id-preferences-id-channel_types. operations: - method: PUT name: updateuserpreferencechanneltypes description: Update channel types in preference set call: knock-preferences.updateuserpreferencechanneltypes outputParameters: - type: object mapping: $. - path: /v1/v1/users/{user-id}/preferences/{id}/channel-types/{type} name: v1-users-user-id-preferences-id-channel-types-type description: REST surface for v1-users-user_id-preferences-id-channel_types-type. operations: - method: PUT name: updateuserpreferencechanneltype description: Update channel type in preference set call: knock-preferences.updateuserpreferencechanneltype outputParameters: - type: object mapping: $. - path: /v1/v1/users/{user-id}/preferences/{id}/workflows name: v1-users-user-id-preferences-id-workflows description: REST surface for v1-users-user_id-preferences-id-workflows. operations: - method: PUT name: updateuserpreferenceworkflows description: Update workflows in preference set call: knock-preferences.updateuserpreferenceworkflows outputParameters: - type: object mapping: $. - path: /v1/v1/users/{user-id}/preferences/{id}/workflows/{key} name: v1-users-user-id-preferences-id-workflows-key description: REST surface for v1-users-user_id-preferences-id-workflows-key. operations: - method: PUT name: updateuserpreferenceworkflow description: Update workflow in user preference set call: knock-preferences.updateuserpreferenceworkflow outputParameters: - type: object mapping: $. - type: mcp namespace: knock-preferences-mcp port: 9090 transport: http description: MCP adapter for Knock API — Preferences. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: list-preference-sets description: List preference sets hints: readOnly: true destructive: false idempotent: true call: knock-preferences.listobjectpreferencesets with: object_id: tools.object_id collection: tools.collection outputParameters: - type: object mapping: $. - name: delete-object-preference-set description: Delete object preference set hints: readOnly: false destructive: true idempotent: true call: knock-preferences.deleteobjectpreferenceset with: object_id: tools.object_id collection: tools.collection id: tools.id outputParameters: - type: object mapping: $. - name: get-object-preference-set description: Get object preference set hints: readOnly: true destructive: false idempotent: true call: knock-preferences.getobjectpreferenceset with: object_id: tools.object_id collection: tools.collection id: tools.id outputParameters: - type: object mapping: $. - name: update-preference-set description: Update a preference set hints: readOnly: false destructive: false idempotent: true call: knock-preferences.updateobjectpreferenceset with: object_id: tools.object_id collection: tools.collection id: tools.id body: tools.body outputParameters: - type: object mapping: $. - name: update-categories-preference-set description: Update categories in preference set hints: readOnly: false destructive: false idempotent: true call: knock-preferences.updateobjectpreferencecategories outputParameters: - type: object mapping: $. - name: update-category-preference description: Update a category preference hints: readOnly: false destructive: false idempotent: true call: knock-preferences.updateobjectpreferencecategory outputParameters: - type: object mapping: $. - name: update-channel-types-preference-set description: Update channel types in preference set hints: readOnly: false destructive: false idempotent: true call: knock-preferences.updateobjectpreferencechanneltypes outputParameters: - type: object mapping: $. - name: update-channel-type-preference description: Update a channel type preference hints: readOnly: false destructive: false idempotent: true call: knock-preferences.updateobjectpreferencechanneltype outputParameters: - type: object mapping: $. - name: update-workflows-preference-set description: Update workflows in preference set hints: readOnly: false destructive: false idempotent: true call: knock-preferences.updateobjectpreferenceworkflows outputParameters: - type: object mapping: $. - name: update-workflow-preference description: Update a workflow preference hints: readOnly: false destructive: false idempotent: true call: knock-preferences.updateobjectpreferenceworkflow outputParameters: - type: object mapping: $. - name: list-user-preference-sets description: List user preference sets hints: readOnly: true destructive: false idempotent: true call: knock-preferences.listuserpreferencesets with: user_id: tools.user_id outputParameters: - type: object mapping: $. - name: delete-user-preference-set description: Delete user preference set hints: readOnly: false destructive: true idempotent: true call: knock-preferences.deleteuserpreferenceset with: user_id: tools.user_id id: tools.id outputParameters: - type: object mapping: $. - name: get-user-preference-set description: Get user preference set hints: readOnly: true destructive: false idempotent: true call: knock-preferences.getuserpreferenceset with: user_id: tools.user_id id: tools.id tenant: tools.tenant outputParameters: - type: object mapping: $. - name: update-user-preference-set description: Update user preference set hints: readOnly: false destructive: false idempotent: true call: knock-preferences.updateuserpreferenceset with: user_id: tools.user_id id: tools.id body: tools.body outputParameters: - type: object mapping: $. - name: update-categories-user-preference-set description: Update categories in user preference set hints: readOnly: false destructive: false idempotent: true call: knock-preferences.updateuserpreferencecategories outputParameters: - type: object mapping: $. - name: update-category-user-preference-set description: Update category in user preference set hints: readOnly: false destructive: false idempotent: true call: knock-preferences.updateuserpreferencecategory outputParameters: - type: object mapping: $. - name: update-channel-types-preference-set-2 description: Update channel types in preference set hints: readOnly: false destructive: false idempotent: true call: knock-preferences.updateuserpreferencechanneltypes outputParameters: - type: object mapping: $. - name: update-channel-type-preference-set description: Update channel type in preference set hints: readOnly: false destructive: false idempotent: true call: knock-preferences.updateuserpreferencechanneltype outputParameters: - type: object mapping: $. - name: update-workflows-preference-set-2 description: Update workflows in preference set hints: readOnly: false destructive: false idempotent: true call: knock-preferences.updateuserpreferenceworkflows outputParameters: - type: object mapping: $. - name: update-workflow-user-preference-set description: Update workflow in user preference set hints: readOnly: false destructive: false idempotent: true call: knock-preferences.updateuserpreferenceworkflow outputParameters: - type: object mapping: $.