### Example JSON response Source: https://developer.productboard.com/reference/getting-started If everything is set up correctly, you’ll see a JSON response like this: ```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" } } ``` -------------------------------- ### cURL Request Source: https://developer.productboard.com/v2.0.0/reference/getnoteconfiguration Example cURL request to get the configuration for a 'simple' note type. ```shell curl --request GET \ --url https://api.productboard.com/v2/notes/configurations/simple \ --header 'accept: application/json' ``` -------------------------------- ### Relationships Definition Example Source: https://developer.productboard.com/reference/getentityconfiguration An example illustrating the definition of relationships for an entity, specifying target types, cardinality, and mandatory status. ```json "relationships": { "parent": { "targetType": [ "component", "product" ], "cardinality": "single", "mandatory": false }, "link": { "targetType": [ "initiative", "release", "feature" ], "cardinality": "multiple", "mandatory": false }, "isBlockedBy": { "targetType": [ "feature" ], "cardinality": "multiple", "mandatory": false }, "isBlocking": { "targetType": [ "feature" ], "cardinality": "multiple", "mandatory": false } } ``` -------------------------------- ### cURL Request Source: https://developer.productboard.com/v2.0.0/reference/listentityconfigurations This is a cURL request example to list configurations. ```Shell curl --request GET \ --url https://api.productboard.com/v2/entities/configurations \ --header 'accept: application/json' ``` -------------------------------- ### Get resource configurations Source: https://developer.productboard.com/ Example of how to retrieve the configurations for the notes resource. ```cURL GET /notes/configurations ``` -------------------------------- ### Entity Example Source: https://developer.productboard.com/reference/getentity An example of an entity payload. ```json { "id": "195a1cb2-728f-4be8-900f-aebbd84d7944", "type": "feature", "fields": { "name": "Awesome Public API", "owner": { "id": "56caede9-bae0-4521-9702-d2c553488caf", "email": "john@doe.com" }, "tags": [ { "id": "95db5914-36b0-45e9-8f6d-7f11a950ac1d", "name": "api" }, { "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "name": "enterprise" } ], "timeframe": { "startDate": "2023-10-01", "endDate": "2023-10-31" } }, "metadata": { "source": { "system": "Jira", "recordId": "API-100" } }, "relationships": { "data": [ { "type": "parent", "target": { "id": "318de52f-4e38-4c94-a550-a0d47a1f212e", "type": "component", "links": { "self": "https://api.productboard.com/v2/entities/318de52f-4e38-4c94-a550-a0d47a1f212e", "html": "https://example.productboard.com/detail/UG1FbnRpdHk6MzE4ZGU1MmYtNGUzOC00Yzk0LWE1NTAtYTBkNDdhMWYyMTJl" } } } ], "links": { "next": null } }, "links": { "self": "https://api.productboard.com/v2/entities/195a1cb2-728f-4be8-900f-aebbd84d7944", "html": "https://example.productboard.com/detail/UG1FbnRpdHk6MTk1YTFjYjItNzI4Zi00YmU4LTkwMGYtYWViYmQ4NGQ3OTQ0" }, "createdAt": "2023-10-01T00:00:00Z", "updatedAt": "2023-10-01T00:00:00Z" } ``` -------------------------------- ### WorkProgressFieldValue Examples Source: https://developer.productboard.com/reference/getentity Examples showing different modes for WorkProgressFieldValue. ```json { "value": 75, "mode": "manual" } ``` ```json { "value": 50, "mode": "statusBased" } ``` ```json { "value": 85, "mode": "calculated" } ``` -------------------------------- ### cURL Request Source: https://developer.productboard.com/v2.0.0/reference/listnoteconfigurations Example cURL request to list configurations. ```Shell curl --request GET \ --url https://api.productboard.com/v2/notes/configurations \ --header 'accept: application/json' ``` -------------------------------- ### List entity configurations example requests Source: https://developer.productboard.com/changelog/2025-11-19 Example cURL requests for listing entity configurations, demonstrating the use of the `type[]` parameter. ```shell curl -X GET \"https://api.productboard.com/v1/entities/configurations?type[]=feature&type[]=idea\" \"-H \"Content-Type: application/json\"\n ``` -------------------------------- ### TimeframeFieldValue Example (Default) Source: https://developer.productboard.com/reference/getentity A default example of a TimeframeFieldValue object. ```json { "startDate": "2023-10-01", "endDate": "2023-10-31", "granularity": "month" } ``` -------------------------------- ### Bearer Authentication Example Source: https://developer.productboard.com/reference/listpluginintegrations Example of using Bearer token authentication. ```shell curl -H "Authorization: Bearer YOUR_API_TOKEN" https://api.productboard.com/... ``` -------------------------------- ### ProgressFieldValue Examples Source: https://developer.productboard.com/reference/getentity Examples demonstrating the structure of ProgressFieldValue for different metrics. ```json { "startValue": 0.0, "targetValue": 100.0, "currentValue": 75.5 } ``` ```json { "startValue": 50000.0, "targetValue": 100000.0, "currentValue": 87500.0 } ``` ```json { "startValue": 1000.0, "targetValue": 5000.0, "currentValue": 3250.0 } ``` -------------------------------- ### TeamsFieldValue Example Source: https://developer.productboard.com/reference/getentity An example demonstrating the structure of the TeamsFieldValue, which is an array of TeamFieldValue objects. ```json [ { "id": "95db5914-36b0-45e9-8f6d-7f11a950ac1d", "name": "Product Team" }, { "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "name": "Engineering Team" } ] ``` -------------------------------- ### GET request example using filters Source: https://developer.productboard.com/reference/configuration-endpoint Shows how to use a filter parameter like status[name] in a GET request. ```http GET /v2/entities?type[]=feature&status[name]=in+progress ``` -------------------------------- ### Feature Note Example Source: https://developer.productboard.com/reference/getnote An example of a feature note object as defined in the OpenAPI specification. ```json { "id": "a23e4567-e89b-12d3-a456-426614174009", "type": "feature", "links": { "self": "https://api.productboard.com/v2/entities/a23e4567-e89b-12d3-a456-426614174009" } } } ], "links": { "self": "https://api.productboard.com/v2/notes/123e4567-e89b-12d3-a456-426614174000", "html": "https://example.productboard.com/all-notes/notes/42" } } } }, "conversation-note": { "summary": "Conversation note response", "value": { "data": { "id": "223e4567-e89b-12d3-a456-426614174001", "type": "conversationNote", "fields": { "name": "Conversation Note", "content": [ { "externalId": "323e4567-e89b-12d3-a456-426614174002", "content": "hello", "authorName": "", "authorType": "agent", "timestamp": "2023-10-01T11:00:00Z" }, { "externalId": "423e4567-e89b-12d3-a456-426614174003", "content": "world", "authorName": "John Doe", "authorType": "customer", "timestamp": "2023-10-01T12:00:00Z" } ], "tags": [ { "name": "support" } ], "owner": { "id": "f23e4567-e89b-12d3-a456-426614174014", "email": "owner2@example.com" }, "creator": { "id": "e23e4567-e89b-12d3-a456-426614174013", "email": "creator@example.com" }, "processed": false, "archived": false, "createdAt": "2023-10-01T10:00:00Z", "updatedAt": "2023-10-01T12:00:00Z" }, "relationships": [ { "type": "customer", "target": { "id": "b23e4567-e89b-12d3-a456-426614174010", "type": "company", "links": { "self": "https://api.productboard.com/v2/companies/b23e4567-e89b-12d3-a456-426614174010" } } } ], "links": { "self": "https://api.productboard.com/v2/notes/223e4567-e89b-12d3-a456-426614174001", "html": "https://example.productboard.com/all-notes/notes/43" } } } }, "opportunity-note": { "summary": "Opportunity note response", "value": { "data": { "id": "323e4567-e89b-12d3-a456-426614174002", "type": "opportunityNote", "fields": { "name": "Opportunity Note", "tags": [ { "name": "sales" } ], "content": [ { "id": "523e4567-e89b-12d3-a456-426614174004", "name": "Amount", "value": "1000.1235", "fieldType": "number" }, { "id": "623e4567-e89b-12d3-a456-426614174005", "name": "Description", "value": "Test Opportunity", "fieldType": "string" }, { "id": "723e4567-e89b-12d3-a456-426614174006", "name": "Close Date", ``` -------------------------------- ### Base URL Source: https://developer.productboard.com/reference/getting-started All API v2 requests use this base URL. ```text https://api.productboard.com/v2 ``` -------------------------------- ### Internal Server Error Example Source: https://developer.productboard.com/reference/getjiraintegration Example of an internal server error response. ```json { "value": { "id": "req-8234567890", "errors": [ { "code": "internal.serverError", "title": "Internal server error", "detail": "An unexpected error occurred while processing your request. Please try again later. If the problem persists, contact support with the correlation ID." } ] } } ``` -------------------------------- ### Minimal create/update response example Source: https://developer.productboard.com/reference/migration-guide Example of the minimal response body returned by create and update operations in v2. ```json { "data": { "id": "123e4567-e89b-12d3-a456-426614174000", "type": "feature", "links": { "self": "https://api.productboard.com/v2/entities/123e4567..." } } } ``` -------------------------------- ### cURL Request Source: https://developer.productboard.com/v2.0.0/reference/getjiraintegrationconnection This is a cURL request example for the Get Jira integration connection endpoint. ```Shell curl --request GET \ --url https://api.productboard.com/v2/jira-integrations/integrationId/connections/entityId \ --header 'accept: application/json' ``` -------------------------------- ### Error Response Example Source: https://developer.productboard.com/reference/listnoteconfigurations Example of a rate limit exceeded error response. ```json { "errors": [ { "code": "rate.limitExceeded", "title": "Rate limitExceeded", "detail": "You have exceeded the allowed number of API requests. Please wait before making additional requests." } ] } ``` -------------------------------- ### cURL Request Source: https://developer.productboard.com/v2.0.0/reference/createpluginintegration Minimal integration Example ```Shell curl --request POST \ --url https://api.productboard.com/v2/plugin-integrations \ --header 'accept: application/json' \ --header 'content-type: application/json' \ --data '{ "data": { "fields": { "type": "com.example.myservice", "name": "My Service Integration", "initialState": { "label": "Push" }, "action": { "url": "https://example.com/productboard-push", "version": 1 } } } }' ``` -------------------------------- ### Unauthorized Response - Invalid Token Example Source: https://developer.productboard.com/reference/getjiraintegration Example of an UnauthorizedResponse when an invalid or expired token is provided. ```json { "id": "req-2234567891", "errors": [ { "code": "auth.invalid", "title": "Invalid authentication" } ] } ``` -------------------------------- ### Jira Integration Response Example Source: https://developer.productboard.com/reference/getjiraintegration Example of a successful response when retrieving Jira integration details. ```json { "data": { "id": "a1b2c3d4-e5f6-4a5b-8c9d-0e1f2a3b4c5d", "type": "jiraIntegration", "createdAt": "2024-01-15T10:30:00.000Z", "fields": { "name": "My Jira Cloud Integration", "integrationStatus": "enabled" }, "links": { "self": "https://api.productboard.com/v2/jira-integrations/a1b2c3d4-e5f6-4a5b-8c9d-0e1f2a3b4c5d", "connections": "https://api.productboard.com/v2/jira-integrations/a1b2c3d4-e5f6-4a5b-8c9d-0e1f2a3b4c5d/connections", "html": "https://example.productboard.com/settings/integrations/jira/a1b2c3d4-e5f6-4a5b-8c9d-0e1f2a3b4c5d" } } } ``` -------------------------------- ### ConfigurationListResponse Example Source: https://developer.productboard.com/reference/listentityconfigurations An example of a paginated list of configurations, including feature and subfeature types with their respective fields and relationships. ```json { "data": [ { "type": "feature", "fields": { "name": { "id": "name", "name": "Name", "path": "/fields/name", "schema": { "type": "string" }, "lifecycle": { "create": { "set": true }, "update": { "set": true }, "patch": { "set": true } }, "constraints": { "required": true, "notBlank": true, "minLength": 1, "maxLength": 2000 }, "links": { "self": "https://api.productboard.info/configuration/fields/name" } }, "owner": { "id": "owner", "name": "Owner", "path": "/fields/owner", "schema": { "type": "object", "required": [ "id", "email" ], "properties": { "id": { "type": "string", "format": "uuid" }, "email": { "type": "string" } } }, "lifecycle": { "create": { "set": true }, "update": { "set": true, "clear": true }, "patch": { "set": true, "clear": true } }, "values": { "data": [], "links": { "next": "https://api.productboard.com/v2/members?roles[]=admin&roles[]=maker" } }, "links": { "self": null } } }, "relationships": { "parent": { "targetType": [ "component", "product" ], "cardinality": "single", "mandatory": false }, "link": { "targetType": [ "initiative", "release", "feature" ], "cardinality": "multiple", "mandatory": false }, "isBlockedBy": { "targetType": [ "feature" ], "cardinality": "multiple", "mandatory": false }, "isBlocking": { "targetType": [ "feature" ], "cardinality": "multiple", "mandatory": false } } }, { "type": "subfeature", "fields": { "name": { "id": "name", "name": "Name", "path": "/fields/name", "schema": { ``` -------------------------------- ### Create a note relationships example Source: https://developer.productboard.com/reference/migration-guide Example of how to structure the relationships array for creating a note in v2, including a user's email. ```json { "relationships": [ { "type": "customer", "target": { "type": "user", "email": "user@example.com" } } ] } ``` -------------------------------- ### cURL Request Source: https://developer.productboard.com/v2.0.0/reference/getteam Example of how to make a GET request to retrieve team details using cURL. ```Shell curl --request GET \ --url https://api.productboard.com/v2/teams/id \ --header 'accept: application/json' ``` -------------------------------- ### TimeframeFieldValue Examples Source: https://developer.productboard.com/reference/getentity Examples of TimeframeFieldValue objects illustrating different planning granularities: monthly, quarterly, annual, and sprint. ```json { "startDate": "2024-01-01", "endDate": "2024-01-31", "granularity": "month" } ``` ```json { "startDate": "2024-01-01", "endDate": "2024-03-31", "granularity": "quarter" } ``` ```json { "startDate": "2024-01-01", "endDate": "2024-12-31", "granularity": "year" } ``` ```json { "startDate": "2024-01-15", "endDate": "2024-01-29", "granularity": "day" } ``` -------------------------------- ### PluginIntegrationConnectionsListResponse Example Source: https://developer.productboard.com/reference/searchpluginintegrationconnections Example of a paginated list of plugin integration connections. ```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" } } } ], "links": { "next": null } } ```