### Get Plugin Integration Connection Response Examples Source: https://developer.productboard.com/reference/getpluginintegrationconnection Examples of responses for retrieving a plugin integration connection, showcasing different states. ```APIDOC ## Get Plugin Integration Connection ### Description Retrieves the details of a specific plugin integration connection. ### Method GET ### Endpoint `/v2/plugin-integrations/{plugin_id}/connections/{connection_id}` ### Response #### Success Response (200) - **data** (object) - Contains the plugin integration connection details. - **id** (string) - The unique identifier of the connection. - **type** (string) - The type of the resource, always 'pluginIntegrationConnection'. - **fields** (object) - Contains connection-specific fields. - **connection** (object) - Details about the connection state and related information. - **state** (string) - The current state of the connection (e.g., 'connected', 'initial', 'error', 'progress'). - **label** (string, optional) - A human-readable label for the connection state. - **hoverLabel** (string, optional) - A label displayed on hover. - **tooltip** (string, optional) - Additional information displayed on hover. - **color** (string, optional) - A color associated with the connection state. - **targetUrl** (string, optional) - A URL related to the connection, e.g., a link to an external issue. - **message** (string, optional) - An error message if the state is 'error'. - **links** (object) - Links related to the connection. - **self** (string) - The URL of this connection resource. ### Response Examples #### Connected ```json { "data": { "id": "00000000-0000-0000-0000-000000000002", "type": "pluginIntegrationConnection", "fields": { "connection": { "state": "connected", "label": "Done", "hoverLabel": "Issue 123", "tooltip": "Issue 123 - Implement XYZ", "color": "green", "targetUrl": "https://example.com/issues/123" } }, "links": { "self": "https://api.productboard.com/v2/plugin-integrations/00000000-0000-0000-0000-000000000001/connections/00000000-0000-0000-0000-000000000002" } } } ``` #### Initial ```json { "data": { "id": "00000000-0000-0000-0000-000000000002", "type": "pluginIntegrationConnection", "fields": { "connection": { "state": "initial" } }, "links": { "self": "https://api.productboard.com/v2/plugin-integrations/00000000-0000-0000-0000-000000000001/connections/00000000-0000-0000-0000-000000000002" } } } ``` #### Error ```json { "data": { "id": "00000000-0000-0000-0000-000000000002", "type": "pluginIntegrationConnection", "fields": { "connection": { "state": "error", "message": "You don't have permission to create an issue." } }, "links": { "self": "https://api.productboard.com/v2/plugin-integrations/00000000-0000-0000-0000-000000000001/connections/00000000-0000-0000-0000-000000000002" } } } ``` #### Progress ```json { "data": { "id": "00000000-0000-0000-0000-000000000002", "type": "pluginIntegrationConnection", "fields": { "connection": { "state": "progress" } }, "links": { "self": "https://api.productboard.com/v2/plugin-integrations/00000000-0000-0000-0000-000000000001/connections/00000000-0000-0000-0000-000000000002" } } } ``` ### Error Handling #### Bad Request Response (400) - **id** (string) - Unique identifier for the error. - **errors** (array) - A list of error objects. - **code** (string) - Error code. - **title** (string) - Error title. - **detail** (string) - Detailed error message. - **source** (object, optional) - Information about the source of the error. - **pointer** (string) - JSON Pointer to the problematic field. ``` -------------------------------- ### Revenue Tracking Progress Example Source: https://developer.productboard.com/reference/listentities Tracks progress for financial metrics like revenue. Use this when the start and target values represent monetary amounts. ```json { "startValue": 50000.0, "targetValue": 100000.0, "currentValue": 87500.0 } ``` -------------------------------- ### Example API Request with curl Source: https://developer.productboard.com/reference/authentication Demonstrates how to make a GET request to the /v2/notes endpoint using curl, including the necessary Authorization and Accept headers. ```curl curl -X GET "https://api.productboard.com/v2/notes" \ -H "Authorization: Bearer " \ -H "Accept: application/json" ``` -------------------------------- ### UUID Example (String) Source: https://developer.productboard.com/reference/getentity Provides an example of a universally unique identifier (UUID) format. ```string 123e4567-e89b-12d3-a456-426614174000 ``` -------------------------------- ### Percentage-Based Progress Example Source: https://developer.productboard.com/reference/listentities Tracks progress towards a target using a percentage-based scale. Suitable for metrics where the start and target are defined as 0 and 100. ```json { "startValue": 0.0, "targetValue": 100.0, "currentValue": 75.5 } ``` -------------------------------- ### List of Members Example Source: https://developer.productboard.com/reference/listmembers This example demonstrates the structure of a successful response when listing members. It includes full member details and pagination links. ```json { "data": [ { "id": "123e4567-e89b-12d3-a456-426614174000", "type": "member", "fields": { "name": "John Doe", "username": "johndoe", "email": "john.doe@example.com", "role": "admin", "disabled": false, "invitationPending": false, "teams": [ { "id": "123e4567-e89b-12d3-a456-426614174000", "name": "Product Team", "links": { "self": "https://api.productboard.com/v2/teams/123e4567-e89b-12d3-a456-426614174000" } } ] }, "links": { "self": "https://api.productboard.com/v2/members/123e4567-e89b-12d3-a456-426614174000" } }, { "id": "223e4567-e89b-12d3-a456-426614174001", "type": "member", "fields": { "name": "Jane Smith", "username": "janesmith", "email": "jane.smith@example.com", "role": "maker", "disabled": false, "invitationPending": false, "teams": [ { "id": "123e4567-e89b-12d3-a456-426614174000", "name": "Product Team", "links": { "self": "https://api.productboard.com/v2/teams/123e4567-e89b-12d3-a456-426614174000" } } ] }, "links": { "self": "https://api.productboard.com/v2/members/223e4567-e89b-12d3-a456-426614174001" } } ], "links": { "next": "https://api.productboard.com/v2/members?pageCursor=next_cursor_value" } } ``` -------------------------------- ### Empty Members List Example Source: https://developer.productboard.com/reference/listmembers This example illustrates the response when there are no members in the workspace. The `data` array is empty, and `next` link is null. ```json { "data": [], "links": { "next": null } } ``` -------------------------------- ### User Count Growth Progress Example Source: https://developer.productboard.com/reference/listentities Tracks progress for metrics involving growth, such as user counts. Use this when the start and target values represent quantities. ```json { "startValue": 1000.0, "targetValue": 5000.0, "currentValue": 3250.0 } ``` -------------------------------- ### Minimal Plugin Integration Example Source: https://developer.productboard.com/reference/createpluginintegration Use this example for a basic plugin integration. It includes the essential fields for type, name, initial state, and action URL. ```json { "data": { "fields": { "type": "com.example.myservice", "name": "My Service Integration", "initialState": { "label": "Push" }, "action": { "url": "https://example.com/productboard-push", "version": 1 } } } } ``` -------------------------------- ### Monthly Planning Timeframe Example Source: https://developer.productboard.com/reference/createentity Defines a monthly planning timeframe with start and end dates. Uses ISO 8601 date format. ```json { "startDate": "2024-01-01", "endDate": "2024-01-31", "granularity": "month" } ``` -------------------------------- ### Using Filters with GET Request Source: https://developer.productboard.com/reference/configuration-endpoint Demonstrates how to apply filters as query parameters in a GET request to list entities. ```http GET /v2/entities?type[]=feature&status[name]=in+progress ``` -------------------------------- ### Unauthorized - Missing Credentials Example Source: https://developer.productboard.com/reference/listteammembers This example illustrates an 'Unauthorized' response when authentication credentials are not provided in the request. ```json { "id": "req-2234567890", "errors": [ { "code": "auth.invalid", "title": "Invalid authentication", "detail": "Authentication credentials are missing." } ] } ``` -------------------------------- ### Example API Request with Pagination Source: https://developer.productboard.com/reference/pagination Use the `pageCursor` query parameter in your GET request to retrieve a specific page of results. Ensure your request includes the necessary Authorization and Accept headers. ```curl GET http://api.productboard.com/v2/notes?pageCursor=some_cursor Authorization: Bearer YOUR_ACCESS_TOKEN Accept: application/json ``` -------------------------------- ### Entity Created Successfully Response Example Source: https://developer.productboard.com/reference/createentity Example of a successful response when an entity is created. It returns a reference to the newly created resource. ```json { "data": { "id": "318de52f-4e38-4c94-a550-a0d47a1f212e", "type": "feature", "links": { "self": "https://api.productboard.com/v2/entities/318de52f-4e38-4c94-a550-a0d47a1f212e" } } } ``` -------------------------------- ### List Team Members - Example Response Source: https://developer.productboard.com/reference/listteammembers This example shows a successful response when listing team members, including their details and a link for the next page of results. ```json { "data": [ { "id": "123e4567-e89b-12d3-a456-426614174000", "type": "member", "fields": { "name": "John Doe", "email": "john@example.com" }, "links": { "self": "https://api.productboard.com/v2/members/123e4567-e89b-12d3-a456-426614174000" } } ], "links": { "next": "https://api.productboard.com/v2/teams/123e4567-e89b-12d3-a456-426614174000/members?pageCursor=abc123" } } ``` -------------------------------- ### Not Found Response Examples Source: https://developer.productboard.com/reference/replacenotecustomerrelationship Examples of error responses when a requested resource or API route does not exist. ```APIDOC ## Not Found Response Examples ### Resource Not Found by ID **Description**: Returned when a resource identified by an ID cannot be found or is inaccessible. **Response Example**: ```json { "id": "req-4234567890", "errors": [ { "code": "resource.notFound", "title": "Resource not found", "detail": "The requested resource could not be found or you do not have permission to access it." } ] } ``` ### API Route Not Found **Description**: Indicates that the requested URL path does not match any defined API route. **Response Example**: ```json { "id": "req-4234567893", "errors": [ { "code": "route.notFound", "title": "Route not found", "detail": "The requested URL path does not match any defined API route. Please check the API documentation for valid endpoints." } ] } ``` ``` -------------------------------- ### Example API Response for Notes Source: https://developer.productboard.com/reference/getting-started This is an example of the JSON response you will receive when fetching notes. It includes a list of notes and a link for pagination. ```json { "data": [ { "id": "123e4567-e89b-12d3-a456-426614174000", "type": "textNote", "fields": { "name": "Customer feedback", "content": "Customer reported slow loading times on mobile app", "owner": { "id": "923e4567-e89b-12d3-a456-426614174008", "email": "john.doe@example.com" }, "creator": { "id": "e23e4567-e89b-12d3-a456-426614174013", "email": "creator@example.com" }, "processed": false, "archived": false }, "links": { "self": "https://api.productboard.com/v2/notes/123e4567-e89b-12d3-a456-426614174000" } }, { "id": "223e4567-e89b-12d3-a456-426614174001", "type": "textNote", "fields": { "name": "Feature request – dark mode", "content": "Customer wants dark mode for the app", "owner": { "id": "923e4567-e89b-12d3-a456-426614174008", "email": "john.doe@example.com" }, "creator": { "id": "e23e4567-e89b-12d3-a456-426614174013", "email": "creator@example.com" }, "processed": true, "archived": false }, "links": { "self": "https://api.productboard.com/v2/notes/223e4567-e89b-12d3-a456-426614174001" } } ], "links": { "next": "https://api.productboard.com/v2/notes?pageCursor=abc123" } } ``` -------------------------------- ### Example Response for Conversation Note Update Source: https://developer.productboard.com/reference/updatenote This example illustrates the successful response when a conversation note is updated. It provides the note's ID, type, and links. ```json { "data": { "id": "223e4567-e89b-12d3-a456-426614174000", "type": "conversationNote", "links": { "self": "https://api.productboard.com/v2/notes/223e4567-e89b-12d3-a456-426614174000", "html": "https://example.productboard.com/all-notes/notes/45" } } } ``` -------------------------------- ### Create a text note with basic fields Source: https://developer.productboard.com/reference/createnote Use this example to create a simple text note. Ensure the 'name' and 'content' fields are provided. ```json { "data": { "type": "textNote", "fields": { "name": "New note", "content": "This is a new note content." } } } ``` -------------------------------- ### Example API Request with Token Source: https://developer.productboard.com/reference/api-token Demonstrates how to include your API token in the Authorization header for making requests to the Productboard API. ```APIDOC ## GET v2/notes ### Description Retrieves a list of notes from your Productboard workspace. ### Method GET ### Endpoint https://api.productboard.com/v2/notes ### Headers - **Authorization** (string) - Required - Your API token in the format "Bearer " - **Accept** (string) - Required - Must be set to "application/json" ### Request Example ```curl curl -X GET "https://api.productboard.com/v2/notes" \ -H "Authorization: Bearer " \ -H "Accept: application/json" ``` ### Response #### Success Response (200) - **notes** (array) - A list of note objects. #### Response Example { "example": "{\"notes\": [{\"id\": \"note_id\", \"title\": \"Note Title\", \"content\": \"Note content...\"}]}" } ``` -------------------------------- ### Sprint Timeframe Example Source: https://developer.productboard.com/reference/createentity Defines a sprint timeframe with start and end dates. Uses ISO 8601 date format. ```json { "startDate": "2024-01-15", "endDate": "2024-01-29", "granularity": "day" } ``` -------------------------------- ### ProgressFieldValue JSON Example Source: https://developer.productboard.com/reference/field-value-types Represents a numerical progress value with start, target, and current values. Use this for general progress tracking. ```json { "startValue": 0.0, "targetValue": 100.0, "currentValue": 45.5 } ``` -------------------------------- ### Annual Strategic Timeframe Example Source: https://developer.productboard.com/reference/createentity Defines an annual strategic timeframe with start and end dates. Uses ISO 8601 date format. ```json { "startDate": "2024-01-01", "endDate": "2024-12-31", "granularity": "year" } ``` -------------------------------- ### Quarterly Initiative Timeframe Example Source: https://developer.productboard.com/reference/createentity Defines a quarterly initiative timeframe with start and end dates. Uses ISO 8601 date format. ```json { "startDate": "2024-01-01", "endDate": "2024-03-31", "granularity": "quarter" } ``` -------------------------------- ### List Note Configurations with Filtering Source: https://developer.productboard.com/reference/listnoteconfigurations This example shows how to filter note configurations by status. Only active configurations will be returned. ```javascript fetch("https://api.example.com/v1/notes/configurations?status=active", { method: "GET", headers: { "Authorization": "Bearer YOUR_API_TOKEN", "Content-Type": "application/json" } }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error("Error:", error)); ``` -------------------------------- ### List Note Configurations Source: https://developer.productboard.com/reference/listnoteconfigurations This snippet demonstrates how to list all note configurations. It requires authentication and specifies the desired output format. ```shell curl -X GET "https://api.example.com/v1/notes/configurations" \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -H "Content-Type: application/json" ``` -------------------------------- ### Fetch a list of notes Source: https://developer.productboard.com/reference/getting-started This command fetches the first page of notes from your Productboard workspace using your API access token. ```APIDOC ## GET /notes ### Description Retrieves a paginated list of notes from your Productboard workspace. ### Method GET ### Endpoint https://api.productboard.com/v2/notes ### Parameters #### Headers - **Authorization** (string) - Required - Bearer token for authentication. - **Accept** (string) - Required - Specifies the expected response format, typically `application/json`. ### Request Example ```curl curl -X GET "https://api.productboard.com/v2/notes" \ -H "Authorization: Bearer " \ -H "Accept: application/json" ``` ### Response #### Success Response (200) Returns a JSON object containing a list of notes and pagination links. - **data** (array) - An array of note objects. - **links** (object) - Contains pagination links, including `next` for the subsequent page. #### Response Example ```json { "data": [ { "id": "123e4567-e89b-12d3-a456-426614174000", "type": "textNote", "fields": { "name": "Customer feedback", "content": "Customer reported slow loading times on mobile app", "owner": { "id": "923e4567-e89b-12d3-a456-426614174008", "email": "john.doe@example.com" }, "creator": { "id": "e23e4567-e89b-12d3-a456-426614174013", "email": "creator@example.com" }, "processed": false, "archived": false }, "links": { "self": "https://api.productboard.com/v2/notes/123e4567-e89b-12d3-a456-426614174000" } } ], "links": { "next": "https://api.productboard.com/v2/notes?pageCursor=abc123" } } ``` ``` -------------------------------- ### Create Note using cURL Source: https://developer.productboard.com/reference/feedback-help Example of how to create a new note using the Productboard API v2 via cURL. Replace YOUR_TOKEN with your actual API token. ```bash # Example using cURL curl -X POST "https://api.productboard.com/v2/notes" \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "data": { "type": "simple", "fields": { "name": "Test Note" } } }' ``` -------------------------------- ### Boolean Field Value Example Source: https://developer.productboard.com/reference/createentity Example of a boolean field value. ```json true ``` -------------------------------- ### UnauthorizedResponse Examples Source: https://developer.productboard.com/reference/deletepluginintegration Examples of UnauthorizedResponse for missing or invalid authentication credentials. ```APIDOC ## UnauthorizedResponse ### Description Unauthorized - Missing or invalid authentication credentials ### Examples #### missingCredentials - **summary**: Missing authentication credentials ``` -------------------------------- ### BadRequestResponse Examples Source: https://developer.productboard.com/reference/deletepluginintegration Examples of BadRequestResponse for various invalid input scenarios. ```APIDOC ## BadRequestResponse ### Description Bad Request - Invalid input format or malformed request ### Examples #### schemaInvalid - **summary**: Request does not satisfy schema - **value**: ```json { "id": "req-1234567890", "errors": [ { "code": "request.invalid", "title": "Request schema invalid", "detail": "The request does not satisfy the required schema. Field 'type' is required but was not provided.", "source": { "pointer": "/data/type" } } ] } ``` #### fieldInvalid - **summary**: Invalid field value type - **value**: ```json { "id": "req-1234567891", "errors": [ { "code": "request.invalid", "title": "Request schema invalid", "detail": "Field 'fields/name' must be a string with maximum length of 255 characters, but received a number.", "source": { "pointer": "/data/fields/name" } } ] } ``` #### malformedJson - **summary**: Malformed JSON syntax - **value**: ```json { "id": "req-1234567892", "errors": [ { "code": "request.malformed", "title": "Request malformed", "detail": "The request body contains invalid JSON syntax. Expected ',' or '}' at line 5, column 12." } ] } ``` #### invalidContentType - **summary**: Invalid content type - **value**: ```json { "id": "req-1234567893", "errors": [ { "code": "request.malformed", "title": "Request malformed", "detail": "The Content-Type header must be 'application/json'. Received 'text/plain'." } ] } ``` ``` -------------------------------- ### Health Mode Enum Example Source: https://developer.productboard.com/reference/createentity Example of a valid health mode value. ```json "calculated" ``` -------------------------------- ### Health Status Enum Example Source: https://developer.productboard.com/reference/createentity Example of a valid health status value. ```json "onTrack" ``` -------------------------------- ### Team List Response Example Source: https://developer.productboard.com/reference/listteams This example demonstrates the structure of a successful response when listing teams. It includes a list of team objects, each with an ID, type, fields, timestamps, and links. A 'next' link is provided for pagination. ```json { "data": [ { "id": "123e4567-e89b-12d3-a456-426614174000", "type": "team", "fields": { "name": "Product Team", "handle": "productteam", "description": "Team responsible for product development", "avatarUrl": "https://cdn.productboard.com/teams/avatars/123/medium.png" }, "createdAt": "2025-01-01T10:00:00Z", "updatedAt": "2025-01-15T14:30:00Z", "links": { "self": "https://api.productboard.com/v2/teams/123e4567-e89b-12d3-a456-426614174000", "members": "https://api.productboard.com/v2/teams/123e4567-e89b-12d3-a456-426614174000/members", "html": "https://example.productboard.com/settings/teams/12" } }, { "id": "223e4567-e89b-12d3-a456-426614174001", "type": "team", "fields": { "name": "Engineering Team", "handle": "engineering", "description": "", "avatarUrl": null }, "createdAt": "2025-01-02T11:00:00Z", "updatedAt": "2025-01-16T15:30:00Z", "links": { "self": "https://api.productboard.com/v2/teams/223e4567-e89b-12d3-a456-426614174001", "members": "https://api.productboard.com/v2/teams/223e4567-e89b-12d3-a456-426614174001/members", "html": "https://example.productboard.com/settings/teams/13" } } ], "links": { "next": "https://api.productboard.com/v2/teams?pageCursor=next_cursor_value" } } ``` -------------------------------- ### Example Field Values List Response Source: https://developer.productboard.com/reference/listentityfieldvalues This example demonstrates the structure of a successful response when retrieving a list of field values, often used for select options. It includes the data and a link to the next page of results. ```json { "data": [ { "id": "a09fccc8-a4ac-4262-84f1-68ad77f82265", "fields": { "name": "High", "color": "red" } }, { "id": "043d163b-fda2-47fd-82ed-4026ad1965e6", "fields": { "name": "Medium", "color": "yellow" } }, { "id": "b2debcbc-5034-4768-aff4-9f52e6c8427e", "fields": { "name": "Low", "color": "gray" } } ], "links": { "next": "https://api.productboard.com/v2/entities/fields/be0f15ed-7e9c-4815-a974-adced8c55602/values?pageCursor=eyJpZCI6IjEyMyJ9" } } ``` -------------------------------- ### Forbidden Response Examples Source: https://developer.productboard.com/reference/replacenotecustomerrelationship Examples of error responses indicating insufficient permissions to access a resource. ```APIDOC ## Forbidden Response Examples ### Permission Denied **Description**: Returned when the user lacks the necessary permissions to perform an operation. **Response Example**: ```json { "id": "req-3234567890", "errors": [ { "code": "auth.accessDenied", "title": "Access denied", "detail": "You do not have permission to perform this operation on the specified resource. Contact your workspace administrator to request access." } ] } ``` ### Insufficient Scope **Description**: Indicates that the authentication token does not have the required OAuth scopes. **Response Example**: ```json { "id": "req-3234567891", "errors": [ { "code": "auth.accessDenied", "title": "Access denied", "detail": "Your authentication token lacks the required OAuth scopes to perform this operation. Please re-authenticate with the necessary scopes." } ] } ``` ### Read-Only Role Restriction **Description**: Returned when the user's role restricts them from performing the requested operation. **Response Example**: ```json { "id": "req-3234567892", "errors": [ { "code": "auth.accessDenied", "title": "Access denied", "detail": "Your user role does not permit this operation. Please contact your workspace administrator." } ] } ``` ``` -------------------------------- ### List Note Configurations with Pagination Source: https://developer.productboard.com/reference/listnoteconfigurations This snippet demonstrates how to paginate through the list of note configurations. It specifies the page number and the number of items per page. ```ruby require 'net/http' require 'uri' uri = URI.parse("https://api.example.com/v1/notes/configurations?page=2&per_page=20") request = Net::HTTP::Get.new(uri) request["Authorization"] = "Bearer YOUR_API_TOKEN" request["Content-Type"] = "application/json" response = Net::HTTP.start(uri.hostname, uri.port, :use_ssl => uri.scheme == "https") do |http| http.request(request) end puts response.body ``` -------------------------------- ### Error Response Example Source: https://developer.productboard.com/reference/performteamssearch Example of a bad request response when the input format is invalid or the request is malformed. ```APIDOC ## Error Response (400 Bad Request) ### Description Returned when the request is malformed or does not meet the required schema. ### Response Example ```json { "id": "req-1234567890", "errors": [ { "code": "request.invalid", "title": "Request schema invalid", "detail": "The request does not satisfy the required schema. Field 'type' is required but was not provided.", "source": { "pointer": "/data/type" } } ] } ``` ``` -------------------------------- ### List Notes with All Fields Source: https://developer.productboard.com/reference/response-field-control Example of listing multiple notes and requesting all available fields, including those with null values, using the `fields[]=all` query parameter. ```APIDOC ## GET /v2.0.0/reference/listnotes ### Description Lists multiple notes, allowing control over the returned fields. Use `fields[]=all` to ensure all configured fields are returned. ### Method GET ### Endpoint `/v2.0.0/reference/listnotes` ### Parameters #### Query Parameters - **fields** (array) - Optional - Specifies which fields to include in the response. Use `fields[]=all` to return all fields, including null values. ### Request Example ```curl curl -X GET "https://api.productboard.com/v2/notes?fields[]=all" -H "Authorization: Bearer " -H "Accept: application/json" ``` ### Response #### Success Response (200) - **name** (string) - The name of the note. - **description** (string) - The description of the note. - **status** (string) - The status of the note. - **owner** (object) - Information about the owner of the note. - **tags** (array) - An array of tags associated with the note. - **content** (string) - The content of the note. - **timeframe** (object) - The timeframe associated with the note. #### Response Example ```json [ { "name": "Note 1", "description": "Description for note 1", "status": "Open", "owner": {"name": "John Doe"}, "tags": ["bug"], "content": "Content of note 1", "timeframe": {"start_date": "2023-01-01"} } ] ``` ``` -------------------------------- ### OpenAPI Definition Example Source: https://developer.productboard.com/reference/createentityfieldvalue An example of an OpenAPI definition structure, specifying supported languages for code generation. ```json { "paths": {}, "components": {}, "x-code-generation-settings": { "languages": [ "shell", "javascript", "ruby" ] } } ``` -------------------------------- ### Example Response for Text Note Update Source: https://developer.productboard.com/reference/updatenote This example shows the successful response structure when a text note is updated. It includes the note's ID, type, and relevant links. ```json { "data": { "id": "123e4567-e89b-12d3-a456-426614174000", "type": "textNote", "links": { "self": "https://api.productboard.com/v2/notes/123e4567-e89b-12d3-a456-426614174000", "html": "https://example.productboard.com/all-notes/notes/42" } } } ``` -------------------------------- ### Unauthorized - Invalid Token Example Source: https://developer.productboard.com/reference/listteammembers This example shows an 'Unauthorized' response when the provided authentication token is invalid or has expired. ```json { "id": "req-2234567891", "errors": [ { "code": "auth.invalid", "title": "Invalid authentication" } ] } ``` -------------------------------- ### Create a text note with advanced fields Source: https://developer.productboard.com/reference/createnote This example demonstrates creating a text note with additional fields such as tags, owner, and content. The 'name' field is always required. ```json { "data": { "type": "textNote", "fields": { "name": "New note", "tags": [ { "name": "product" }, { "name": "q2" } ], "content": "This is a new note content.", "owner": { "email": "jane.doe@example.com" } } } } ```