{"openapi":"3.1.0","info":{"title":"Pike Open API","description":"Workspace-scoped REST API for Pike PSA. Provides read access to projects, tasks, customers, and members. Authenticate with a workspace API secret issued by a workspace administrator. For AI/MCP access use https://mcp.usepike.com instead.","version":"1","contact":{"name":"Pike support","url":"https://usepike.com/contact","email":"hello@usepike.com"},"license":{"name":"Proprietary","url":"https://usepike.com/terms"}},"servers":[{"url":"https://api.usepike.com","description":"Production"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Workspace API secret. Create in Pike → Workspace settings → Integrations → Open API."}}},"paths":{"/projects":{"get":{"operationId":"listProjects","summary":"List projects","description":"Return a paginated list of projects in the workspace. Requires the projects:read scope.","tags":["Projects"],"parameters":[{"name":"limit","in":"query","description":"Max items per page (default 50, max 200)","schema":{"type":"integer","default":50,"maximum":200}},{"name":"cursor","in":"query","description":"Opaque cursor from previous response nextCursor","schema":{"type":"string"}},{"name":"status","in":"query","description":"Filter by workspace project status key","schema":{"type":"string"}},{"name":"teamId","in":"query","description":"Filter by team id","schema":{"type":"string"}}],"responses":{"200":{"description":"Paginated project list","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"projectNumber":{"type":"string"},"title":{"type":"string"},"status":{"type":"string","description":"Workspace-defined status key"},"statusCategory":{"type":"string","enum":["backlog","planned","inProgress","completed","cancelled"]},"teamId":{"type":"string","nullable":true},"customerId":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"phases":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"startDate":{"type":"string","format":"date","nullable":true},"endDate":{"type":"string","format":"date","nullable":true}},"required":["id","name"]}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectNumber","title","status","statusCategory","createdAt","updatedAt"]}},"nextCursor":{"type":"string","nullable":true},"hasMore":{"type":"boolean"}},"required":["items","hasMore"]}}}},"401":{"description":"Unauthorized — missing or invalid Bearer token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}},"required":["code","message","requestId"]}},"required":["error"]}}}},"403":{"description":"Forbidden — secret lacks the required scope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}},"required":["code","message","requestId"]}},"required":["error"]}}}},"429":{"description":"Rate limited","headers":{"Retry-After":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}},"required":["code","message","requestId"]}},"required":["error"]}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}},"required":["code","message","requestId"]}},"required":["error"]}}}}}}},"/projects/{projectId}":{"get":{"operationId":"getProject","summary":"Get project","description":"Retrieve a single project by id. Requires the projects:read scope.","tags":["Projects"],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Project object","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"projectNumber":{"type":"string"},"title":{"type":"string"},"status":{"type":"string","description":"Workspace-defined status key"},"statusCategory":{"type":"string","enum":["backlog","planned","inProgress","completed","cancelled"]},"teamId":{"type":"string","nullable":true},"customerId":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"phases":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"startDate":{"type":"string","format":"date","nullable":true},"endDate":{"type":"string","format":"date","nullable":true}},"required":["id","name"]}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectNumber","title","status","statusCategory","createdAt","updatedAt"]}}}},"401":{"description":"Unauthorized — missing or invalid Bearer token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}},"required":["code","message","requestId"]}},"required":["error"]}}}},"403":{"description":"Forbidden — secret lacks the required scope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}},"required":["code","message","requestId"]}},"required":["error"]}}}},"404":{"description":"Project not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}},"required":["code","message","requestId"]}},"required":["error"]}}}},"429":{"description":"Rate limited","headers":{"Retry-After":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}},"required":["code","message","requestId"]}},"required":["error"]}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}},"required":["code","message","requestId"]}},"required":["error"]}}}}}}},"/tasks":{"get":{"operationId":"listTasks","summary":"List tasks","description":"Return a paginated list of tasks in the workspace. Requires the tasks:read scope.","tags":["Tasks"],"parameters":[{"name":"limit","in":"query","description":"Max items per page (default 50, max 200)","schema":{"type":"integer","default":50,"maximum":200}},{"name":"cursor","in":"query","description":"Opaque cursor from previous response nextCursor","schema":{"type":"string"}},{"name":"projectId","in":"query","description":"Filter by project id","schema":{"type":"string"}},{"name":"status","in":"query","description":"Filter by task status","schema":{"type":"string","enum":["toDo","inProgress","inReview","done","cancelled","duplicate","backlog"]}},{"name":"teamId","in":"query","description":"Filter by team id","schema":{"type":"string"}}],"responses":{"200":{"description":"Paginated task list","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"description":{"type":"string","nullable":true},"status":{"type":"string","enum":["toDo","inProgress","inReview","done","cancelled","duplicate","backlog"]},"priority":{"type":"string","enum":["none","low","medium","high","urgent"]},"projectId":{"type":"string","nullable":true},"teamId":{"type":"string","nullable":true},"assigneeIds":{"type":"array","items":{"type":"string"}},"startDate":{"type":"string","format":"date","nullable":true},"dueDate":{"type":"string","format":"date","nullable":true},"billableStatus":{"type":"string","enum":["billable","nonBillable"],"nullable":true},"customerId":{"type":"string","nullable":true},"phaseId":{"type":"string","nullable":true},"labelIds":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","title","status","priority","assigneeIds","labelIds","createdAt","updatedAt"]}},"nextCursor":{"type":"string","nullable":true},"hasMore":{"type":"boolean"}},"required":["items","hasMore"]}}}},"401":{"description":"Unauthorized — missing or invalid Bearer token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}},"required":["code","message","requestId"]}},"required":["error"]}}}},"403":{"description":"Forbidden — secret lacks the required scope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}},"required":["code","message","requestId"]}},"required":["error"]}}}},"429":{"description":"Rate limited","headers":{"Retry-After":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}},"required":["code","message","requestId"]}},"required":["error"]}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}},"required":["code","message","requestId"]}},"required":["error"]}}}}}}},"/tasks/{taskId}":{"get":{"operationId":"getTask","summary":"Get task","description":"Retrieve a single task by id. Requires the tasks:read scope.","tags":["Tasks"],"parameters":[{"name":"taskId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Task object","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"description":{"type":"string","nullable":true},"status":{"type":"string","enum":["toDo","inProgress","inReview","done","cancelled","duplicate","backlog"]},"priority":{"type":"string","enum":["none","low","medium","high","urgent"]},"projectId":{"type":"string","nullable":true},"teamId":{"type":"string","nullable":true},"assigneeIds":{"type":"array","items":{"type":"string"}},"startDate":{"type":"string","format":"date","nullable":true},"dueDate":{"type":"string","format":"date","nullable":true},"billableStatus":{"type":"string","enum":["billable","nonBillable"],"nullable":true},"customerId":{"type":"string","nullable":true},"phaseId":{"type":"string","nullable":true},"labelIds":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","title","status","priority","assigneeIds","labelIds","createdAt","updatedAt"]}}}},"401":{"description":"Unauthorized — missing or invalid Bearer token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}},"required":["code","message","requestId"]}},"required":["error"]}}}},"403":{"description":"Forbidden — secret lacks the required scope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}},"required":["code","message","requestId"]}},"required":["error"]}}}},"404":{"description":"Task not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}},"required":["code","message","requestId"]}},"required":["error"]}}}},"429":{"description":"Rate limited","headers":{"Retry-After":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}},"required":["code","message","requestId"]}},"required":["error"]}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}},"required":["code","message","requestId"]}},"required":["error"]}}}}}}},"/customers":{"get":{"operationId":"listCustomers","summary":"List customers","description":"Return a paginated list of customers. Requires the customers:read scope.","tags":["Customers"],"parameters":[{"name":"limit","in":"query","description":"Max items per page (default 50, max 200)","schema":{"type":"integer","default":50,"maximum":200}},{"name":"cursor","in":"query","description":"Opaque cursor from previous response nextCursor","schema":{"type":"string"}},{"name":"q","in":"query","description":"Search by name or number","schema":{"type":"string"}}],"responses":{"200":{"description":"Paginated customer list","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"customerName":{"type":"string"},"customerNumber":{"type":"string","nullable":true},"taxVatId":{"type":"string","nullable":true},"mainCurrency":{"type":"string","description":"ISO 4217 currency code"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","customerName","mainCurrency","createdAt","updatedAt"]}},"nextCursor":{"type":"string","nullable":true},"hasMore":{"type":"boolean"}},"required":["items","hasMore"]}}}},"401":{"description":"Unauthorized — missing or invalid Bearer token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}},"required":["code","message","requestId"]}},"required":["error"]}}}},"403":{"description":"Forbidden — secret lacks the required scope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}},"required":["code","message","requestId"]}},"required":["error"]}}}},"429":{"description":"Rate limited","headers":{"Retry-After":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}},"required":["code","message","requestId"]}},"required":["error"]}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}},"required":["code","message","requestId"]}},"required":["error"]}}}}}}},"/customers/{customerId}":{"get":{"operationId":"getCustomer","summary":"Get customer","description":"Retrieve a single customer by id. Requires the customers:read scope.","tags":["Customers"],"parameters":[{"name":"customerId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Customer object","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"customerName":{"type":"string"},"customerNumber":{"type":"string","nullable":true},"taxVatId":{"type":"string","nullable":true},"mainCurrency":{"type":"string","description":"ISO 4217 currency code"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","customerName","mainCurrency","createdAt","updatedAt"]}}}},"401":{"description":"Unauthorized — missing or invalid Bearer token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}},"required":["code","message","requestId"]}},"required":["error"]}}}},"403":{"description":"Forbidden — secret lacks the required scope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}},"required":["code","message","requestId"]}},"required":["error"]}}}},"404":{"description":"Customer not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}},"required":["code","message","requestId"]}},"required":["error"]}}}},"429":{"description":"Rate limited","headers":{"Retry-After":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}},"required":["code","message","requestId"]}},"required":["error"]}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}},"required":["code","message","requestId"]}},"required":["error"]}}}}}}},"/members":{"get":{"operationId":"listMembers","summary":"List members","description":"Return a paginated list of workspace members. Requires the members:read scope.","tags":["Members"],"parameters":[{"name":"limit","in":"query","description":"Max items per page (default 50, max 200)","schema":{"type":"integer","default":50,"maximum":200}},{"name":"cursor","in":"query","description":"Opaque cursor from previous response nextCursor","schema":{"type":"string"}},{"name":"status","in":"query","description":"Filter by member status","schema":{"type":"string","enum":["active","invited","inactive"]}}],"responses":{"200":{"description":"Paginated member list","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string","format":"email"},"displayName":{"type":"string"},"status":{"type":"string","enum":["active","invited","inactive"]},"workspaceRole":{"type":"string","enum":["admin","member"]},"teamIds":{"type":"array","items":{"type":"string"}},"positionId":{"type":"string","nullable":true},"invitedAt":{"type":"string","format":"date-time","nullable":true},"joinedAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","email","displayName","status","workspaceRole","teamIds","createdAt","updatedAt"]}},"nextCursor":{"type":"string","nullable":true},"hasMore":{"type":"boolean"}},"required":["items","hasMore"]}}}},"401":{"description":"Unauthorized — missing or invalid Bearer token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}},"required":["code","message","requestId"]}},"required":["error"]}}}},"403":{"description":"Forbidden — secret lacks the required scope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}},"required":["code","message","requestId"]}},"required":["error"]}}}},"429":{"description":"Rate limited","headers":{"Retry-After":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}},"required":["code","message","requestId"]}},"required":["error"]}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}},"required":["code","message","requestId"]}},"required":["error"]}}}}}}},"/members/{memberId}":{"get":{"operationId":"getMember","summary":"Get member","description":"Retrieve a single workspace member by id. Requires the members:read scope.","tags":["Members"],"parameters":[{"name":"memberId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Member object","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string","format":"email"},"displayName":{"type":"string"},"status":{"type":"string","enum":["active","invited","inactive"]},"workspaceRole":{"type":"string","enum":["admin","member"]},"teamIds":{"type":"array","items":{"type":"string"}},"positionId":{"type":"string","nullable":true},"invitedAt":{"type":"string","format":"date-time","nullable":true},"joinedAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","email","displayName","status","workspaceRole","teamIds","createdAt","updatedAt"]}}}},"401":{"description":"Unauthorized — missing or invalid Bearer token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}},"required":["code","message","requestId"]}},"required":["error"]}}}},"403":{"description":"Forbidden — secret lacks the required scope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}},"required":["code","message","requestId"]}},"required":["error"]}}}},"404":{"description":"Member not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}},"required":["code","message","requestId"]}},"required":["error"]}}}},"429":{"description":"Rate limited","headers":{"Retry-After":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}},"required":["code","message","requestId"]}},"required":["error"]}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}},"required":["code","message","requestId"]}},"required":["error"]}}}}}}}}}