openapi: 3.1.0 info: title: Coordinate REST Comments Stakeholders API version: v1 description: 'The Coordinate REST API lets you add, update, and retrieve the entities that make up Coordinate''s client project-execution platform: projects, project pages, tasks, task groups, stakeholders, goals, progress reports, discussion entries (comments), and organizations. All requests are scoped to the vendor that owns the API key; `vendor_id` is derived from the key and cannot be overridden. A companion webhook API lets external systems subscribe to create/update events. This description is captured by the API Evangelist enrichment pipeline from Coordinate''s published agent-oriented API reference.' contact: name: Coordinate Support email: support@coordinatehq.com url: https://www.coordinatehq.com/library/integrating-with-coordinate termsOfService: https://coordinatehq.com/legal/terms-and-conditions x-api-reference: https://app.coordinatehq.com/static/API_Documentation.html servers: - url: https://app.coordinatehq.com/api/v1 description: Production security: - BearerHeader: [] tags: - name: Stakeholders description: Client-side collaborators on a project. paths: /projects/{project_id}/stakeholder: parameters: - $ref: '#/components/parameters/ProjectId' get: operationId: listStakeholders summary: List stakeholders on a project tags: - Stakeholders parameters: - $ref: '#/components/parameters/LastModifiedDt' - $ref: '#/components/parameters/Sort' responses: '200': description: Array of stakeholders content: application/json: schema: type: array items: $ref: '#/components/schemas/Stakeholder' '401': $ref: '#/components/responses/Unauthorized' post: operationId: inviteStakeholder summary: Invite a stakeholder to a project description: May return a Stakeholder object OR the string "User added to project" when the email belongs to an existing user. Returns 400 if the email is already a stakeholder on the project. tags: - Stakeholders requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/InviteStakeholderRequest' responses: '200': description: The stakeholder, or a "User added to project" acknowledgement content: application/json: schema: oneOf: - $ref: '#/components/schemas/Stakeholder' - type: string '400': $ref: '#/components/responses/ValidationError' '401': $ref: '#/components/responses/Unauthorized' /projects/{project_id}/stakeholder/{stakeholder_id}: parameters: - $ref: '#/components/parameters/ProjectId' - $ref: '#/components/parameters/StakeholderId' get: operationId: getStakeholder summary: Get one stakeholder tags: - Stakeholders responses: '200': description: The stakeholder content: application/json: schema: $ref: '#/components/schemas/Stakeholder' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' components: schemas: Error: type: object properties: success: type: boolean example: false error: type: string EntityBase: type: object properties: entity_type: type: string entity_url: type: string last_modified_dt: type: string vendor_id: type: string format: uuid external_object_id: type: - string - 'null' Stakeholder: allOf: - $ref: '#/components/schemas/EntityBase' - type: object properties: stakeholder_id: type: string format: uuid stakeholder_email_address: type: string stakeholder_full_name: type: - string - 'null' stakeholder_title: type: - string - 'null' stakeholder_phone: type: - string - 'null' stakeholder_project_id: type: - string - 'null' format: uuid stakeholder_related_org_id: type: - string - 'null' stakeholder_roles: type: array items: type: string InviteStakeholderRequest: type: object required: - stakeholder_email_address properties: stakeholder_email_address: type: string description: REQUIRED. Lowercased and trimmed server-side. stakeholder_full_name: type: string stakeholder_title: type: string stakeholder_phone: type: string stakeholder_invite_message: type: string stakeholder_role: type: string description: Must match a role defined on the vendor. full_plan_access: type: boolean default: true suppress_invite_email: type: boolean default: false send_role_assignment_emails: type: boolean default: true external_object_id: type: string parameters: StakeholderId: name: stakeholder_id in: path required: true schema: type: string format: uuid Sort: name: sort in: query required: false description: Sort by last_modified_dt. schema: type: string enum: - asc - desc default: asc ProjectId: name: project_id in: path required: true schema: type: string format: uuid LastModifiedDt: name: last_modified_dt in: query required: false description: ISO 8601. Return only items modified at or after this timestamp. URL-encode `+` as `%2B`. schema: type: string responses: ValidationError: description: Validation failure content: application/json: schema: $ref: '#/components/schemas/Error' Unauthorized: description: Missing or invalid API key NotFound: description: Resource not found (often a plain-text body such as "Project Not Found") securitySchemes: BearerHeader: type: apiKey in: header name: Bearer description: 'API key sent in a custom `Bearer:` header (note: this is a header named "Bearer", not the standard `Authorization: Bearer` scheme). Create keys in the Coordinate UI under Settings > Integrations > API Keys. The key scopes all requests to its owning vendor.'