naftiko: 1.0.0-alpha2 info: label: Pipedrive API v2 — Projects description: 'Pipedrive API v2 — Projects. 10 operations. Lead operation: Get all projects. Self-contained Naftiko capability covering one Pipedrive business surface.' tags: - Pipedrive - Projects created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: PIPEDRIVE_API_KEY: PIPEDRIVE_API_KEY capability: consumes: - type: http namespace: v2-projects baseUri: https://api.pipedrive.com/api/v2 description: Pipedrive API v2 — Projects business capability. Self-contained, no shared references. resources: - name: projects path: /projects operations: - name: getprojects method: GET description: Get all projects outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: filter_id in: query type: integer description: If supplied, only projects matching the specified filter are returned - name: status in: query type: string description: If supplied, includes only projects with the specified statuses. Possible values are `open`, `completed`, `canceled` and `deleted`. By default `deleted` project - name: phase_id in: query type: integer description: If supplied, only projects in the specified phase are returned - name: limit in: query type: integer description: For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed. - name: cursor in: query type: string description: For pagination, the marker (an opaque string value) representing the first item on the next page - name: addproject method: POST description: Add a project outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: projects-archived path: /projects/archived operations: - name: getarchivedprojects method: GET description: Get all archived projects outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: filter_id in: query type: integer description: If supplied, only projects matching the specified filter are returned - name: status in: query type: string description: If supplied, includes only projects with the specified statuses. Possible values are `open`, `completed`, `canceled` and `deleted`. By default `deleted` project - name: phase_id in: query type: integer description: If supplied, only projects in the specified phase are returned - name: limit in: query type: integer description: For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed. - name: cursor in: query type: string description: For pagination, the marker (an opaque string value) representing the first item on the next page - name: projects-search path: /projects/search operations: - name: searchprojects method: GET description: Search projects outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: term in: query type: string description: The search term to look for. Minimum 2 characters (or 1 if using `exact_match`). Please note that the search term has to be URL encoded. required: true - name: fields in: query type: string description: 'A comma-separated string array. The fields to perform the search from. Defaults to all of them. Only the following custom field types are searchable: `address`,' - name: exact_match in: query type: boolean description: When enabled, only full exact matches against the given term are returned. It is not case sensitive. - name: person_id in: query type: integer description: Will filter projects by the provided person ID - name: organization_id in: query type: integer description: Will filter projects by the provided organization ID - name: limit in: query type: integer description: For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed. - name: cursor in: query type: string description: For pagination, the marker (an opaque string value) representing the first item on the next page - name: projects-id path: /projects/{id} operations: - name: getproject method: GET description: Get details of a project outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: integer description: The ID of the project required: true - name: updateproject method: PATCH description: Update a project outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: integer description: The ID of the project required: true - name: body in: body type: object description: Request body (JSON). required: false - name: deleteproject method: DELETE description: Delete a project outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: integer description: The ID of the project required: true - name: projects-id-archive path: /projects/{id}/archive operations: - name: archiveproject method: POST description: Archive a project outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: integer description: The ID of the project required: true - name: projects-id-changelog path: /projects/{id}/changelog operations: - name: getprojectchangelog method: GET description: List updates about project field values outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: integer description: The ID of the project required: true - name: limit in: query type: integer description: For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed. - name: cursor in: query type: string description: For pagination, the marker (an opaque string value) representing the first item on the next page - name: projects-id-permittedUsers path: /projects/{id}/permittedUsers operations: - name: getprojectusers method: GET description: List permitted users outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: integer description: The ID of the project required: true authentication: type: bearer token: '{{env.PIPEDRIVE_API_KEY}}' exposes: - type: rest namespace: v2-projects-rest port: 8080 description: REST adapter for Pipedrive API v2 — Projects. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/projects name: projects description: REST surface for projects. operations: - method: GET name: getprojects description: Get all projects call: v2-projects.getprojects with: filter_id: rest.filter_id status: rest.status phase_id: rest.phase_id limit: rest.limit cursor: rest.cursor outputParameters: - type: object mapping: $. - method: POST name: addproject description: Add a project call: v2-projects.addproject with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/projects/archived name: projects-archived description: REST surface for projects-archived. operations: - method: GET name: getarchivedprojects description: Get all archived projects call: v2-projects.getarchivedprojects with: filter_id: rest.filter_id status: rest.status phase_id: rest.phase_id limit: rest.limit cursor: rest.cursor outputParameters: - type: object mapping: $. - path: /v1/projects/search name: projects-search description: REST surface for projects-search. operations: - method: GET name: searchprojects description: Search projects call: v2-projects.searchprojects with: term: rest.term fields: rest.fields exact_match: rest.exact_match person_id: rest.person_id organization_id: rest.organization_id limit: rest.limit cursor: rest.cursor outputParameters: - type: object mapping: $. - path: /v1/projects/{id} name: projects-id description: REST surface for projects-id. operations: - method: GET name: getproject description: Get details of a project call: v2-projects.getproject with: id: rest.id outputParameters: - type: object mapping: $. - method: PATCH name: updateproject description: Update a project call: v2-projects.updateproject with: id: rest.id body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: deleteproject description: Delete a project call: v2-projects.deleteproject with: id: rest.id outputParameters: - type: object mapping: $. - path: /v1/projects/{id}/archive name: projects-id-archive description: REST surface for projects-id-archive. operations: - method: POST name: archiveproject description: Archive a project call: v2-projects.archiveproject with: id: rest.id outputParameters: - type: object mapping: $. - path: /v1/projects/{id}/changelog name: projects-id-changelog description: REST surface for projects-id-changelog. operations: - method: GET name: getprojectchangelog description: List updates about project field values call: v2-projects.getprojectchangelog with: id: rest.id limit: rest.limit cursor: rest.cursor outputParameters: - type: object mapping: $. - path: /v1/projects/{id}/permittedusers name: projects-id-permittedusers description: REST surface for projects-id-permittedUsers. operations: - method: GET name: getprojectusers description: List permitted users call: v2-projects.getprojectusers with: id: rest.id outputParameters: - type: object mapping: $. - type: mcp namespace: v2-projects-mcp port: 9090 transport: http description: MCP adapter for Pipedrive API v2 — Projects. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: get-all-projects description: Get all projects hints: readOnly: true destructive: false idempotent: true call: v2-projects.getprojects with: filter_id: tools.filter_id status: tools.status phase_id: tools.phase_id limit: tools.limit cursor: tools.cursor outputParameters: - type: object mapping: $. - name: add-project description: Add a project hints: readOnly: false destructive: false idempotent: false call: v2-projects.addproject with: body: tools.body outputParameters: - type: object mapping: $. - name: get-all-archived-projects description: Get all archived projects hints: readOnly: true destructive: false idempotent: true call: v2-projects.getarchivedprojects with: filter_id: tools.filter_id status: tools.status phase_id: tools.phase_id limit: tools.limit cursor: tools.cursor outputParameters: - type: object mapping: $. - name: search-projects description: Search projects hints: readOnly: true destructive: false idempotent: true call: v2-projects.searchprojects with: term: tools.term fields: tools.fields exact_match: tools.exact_match person_id: tools.person_id organization_id: tools.organization_id limit: tools.limit cursor: tools.cursor outputParameters: - type: object mapping: $. - name: get-details-project description: Get details of a project hints: readOnly: true destructive: false idempotent: true call: v2-projects.getproject with: id: tools.id outputParameters: - type: object mapping: $. - name: update-project description: Update a project hints: readOnly: false destructive: false idempotent: true call: v2-projects.updateproject with: id: tools.id body: tools.body outputParameters: - type: object mapping: $. - name: delete-project description: Delete a project hints: readOnly: false destructive: true idempotent: true call: v2-projects.deleteproject with: id: tools.id outputParameters: - type: object mapping: $. - name: archive-project description: Archive a project hints: readOnly: false destructive: false idempotent: false call: v2-projects.archiveproject with: id: tools.id outputParameters: - type: object mapping: $. - name: list-updates-about-project-field description: List updates about project field values hints: readOnly: true destructive: false idempotent: true call: v2-projects.getprojectchangelog with: id: tools.id limit: tools.limit cursor: tools.cursor outputParameters: - type: object mapping: $. - name: list-permitted-users description: List permitted users hints: readOnly: true destructive: false idempotent: true call: v2-projects.getprojectusers with: id: tools.id outputParameters: - type: object mapping: $.