openapi: 3.0.3 info: title: Wrike Access Roles Contacts API description: The Wrike REST API v4 enables developers to build integrations and automations for Wrike, a collaborative work management platform used by 20,000+ organizations. The API provides access to tasks, folders, projects, contacts, workflows, time tracking, webhooks, and more. Authentication uses OAuth 2.0 or permanent access tokens. Additional platforms include a DataHub Public API for analytics, BI Export, Cloud Content Connector, and an MCP Server for AI assistant integration. version: '4.0' termsOfService: https://www.wrike.com/developer-terms/ contact: name: Wrike Developer Support url: https://developers.wrike.com license: name: Wrike API Terms url: https://www.wrike.com/developer-terms/ servers: - url: https://www.wrike.com/api/v4 description: Wrike REST API v4 security: - oauth2: [] - bearerToken: [] tags: - name: Contacts description: Users and user groups in Wrike accounts paths: /contacts: get: operationId: listContacts summary: List Contacts description: Returns a list of contacts of all users and user groups in all accessible accounts. tags: - Contacts parameters: - name: me in: query description: If present, only contact info of the requesting user is returned required: false schema: type: boolean - name: metadata in: query description: Metadata filter, exact match for metadata key or key-value pair required: false schema: type: string - name: fields in: query description: JSON string array of optional fields to include in the response required: false schema: type: string responses: '200': description: List of contacts content: application/json: schema: $ref: '#/components/schemas/ContactListResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' /contacts/{contactId}: get: operationId: getContact summary: Get Contact description: Returns contact information for specified users and user groups. tags: - Contacts parameters: - name: contactId in: path required: true description: Comma-separated list of contact IDs (up to 100) schema: type: string - name: fields in: query description: JSON string array of optional fields to include in the response required: false schema: type: string responses: '200': description: Contact details content: application/json: schema: $ref: '#/components/schemas/ContactListResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' put: operationId: updateContact summary: Update Contact description: Updates contact information. Only the contact whose API token is being used may be updated. tags: - Contacts parameters: - name: contactId in: path required: true description: The contact ID schema: type: string requestBody: content: application/x-www-form-urlencoded: schema: type: object properties: metadata: type: string description: Metadata key-value pairs to update responses: '200': description: Updated contact content: application/json: schema: $ref: '#/components/schemas/ContactListResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' components: schemas: Profile: type: object properties: accountId: type: string email: type: string format: email role: type: string enum: - User - Collaborator external: type: boolean admin: type: boolean owner: type: boolean Metadata: type: object properties: key: type: string value: type: string ContactListResponse: type: object properties: kind: type: string example: contacts data: type: array items: $ref: '#/components/schemas/Contact' Contact: type: object properties: id: type: string description: Unique contact identifier firstName: type: string lastName: type: string type: type: string enum: - Person - Group profiles: type: array items: $ref: '#/components/schemas/Profile' avatarUrl: type: string format: uri timezone: type: string locale: type: string deleted: type: boolean me: type: boolean description: True if this contact represents the requesting user title: type: string companyName: type: string phone: type: string location: type: string metadata: type: array items: $ref: '#/components/schemas/Metadata' Error: type: object required: - error - errorDescription properties: error: type: string description: Error code example: not_authorized errorDescription: type: string description: Human-readable error description example: The access token is invalid responses: NotFound: description: Resource not found content: application/json: schema: $ref: '#/components/schemas/Error' Unauthorized: description: Authentication required or token invalid content: application/json: schema: $ref: '#/components/schemas/Error' BadRequest: description: Bad request - invalid parameters content: application/json: schema: $ref: '#/components/schemas/Error' securitySchemes: oauth2: type: oauth2 description: OAuth 2.0 authorization code flow flows: authorizationCode: authorizationUrl: https://www.wrike.com/oauth2/authorize tokenUrl: https://www.wrike.com/oauth2/token scopes: Default: Default access scope amReadOnlyWorkflow: Read-only access to workflows amReadWriteWorkflow: Read-write access to workflows wsReadOnly: Read-only workspace access wsReadWrite: Read-write workspace access amReadOnlyAccessRole: Read-only access to access roles bearerToken: type: http scheme: bearer description: Permanent access token (legacy authentication) externalDocs: description: Wrike Developer Documentation url: https://developers.wrike.com