Proposals
Create, send, and manage proposals. Approve, reject, and convert proposals into projects.
REST API — All endpoints require authentication via Bearer token. IncludeAuthorization: Bearer {token}in every request. Tokens are managed in GitScrum Settings → API. Base URL:https://services.gitscrum.com— All request paths in this documentation are relative to this base URL.
Create, send, and manage proposals through their full lifecycle. Approve, reject, or convert approved proposals into projects.
List proposals
GET /proposals?company_slug={slug}Returns all proposals in the workspace.
Query parameters
| Parameter | Type | Description |
|---|---|---|
company_slug | string | Workspace identifier |
status | string | Filter: draft, sent, approved, rejected |
client_uuid | string | Filter by client UUID |
Response
{
"data": [
{
"uuid": "prop-abc-123",
"title": "Mobile App Development",
"status": "sent",
"client": {
"uuid": "client-abc-123",
"name": "Acme Corp"
},
"total_amount": 75000,
"currency": "USD",
"valid_until": "2026-03-15",
"sent_at": "2026-02-01T10:00:00Z",
"approved_at": null,
"rejected_at": null,
"created_at": "2026-01-25T09:00:00Z"
}
]
}Get proposal
GET /proposals/{uuid}?company_slug={slug}Returns full proposal details.
Path parameters
| Parameter | Type | Description |
|---|---|---|
uuid | string | Proposal UUID |
Response
{
"data": {
"uuid": "prop-abc-123",
"title": "Mobile App Development",
"status": "sent",
"client": {
"uuid": "client-abc-123",
"name": "Acme Corp"
},
"content": "## Project scope\n\nFull mobile app development...",
"total_amount": 75000,
"currency": "USD",
"valid_until": "2026-03-15",
"sent_at": "2026-02-01T10:00:00Z",
"approved_at": null,
"rejected_at": null,
"reason": null,
"created_at": "2026-01-25T09:00:00Z"
}
}Stats
GET /proposals/stats?company_slug={slug}Returns proposal statistics for the workspace.
Response
{
"data": {
"total": 24,
"draft": 3,
"sent": 5,
"approved": 14,
"rejected": 2,
"total_value": 450000,
"approved_value": 320000
}
}Create proposal
POST /proposalsCreates a new proposal in draft status.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
title | string | Yes | Proposal title |
company_slug | string | Yes | Workspace identifier |
contactcompanyuuid | string | No | Client UUID |
content | string | No | Proposal body (markdown) |
total_amount | number | No | Total value |
currency | string | No | USD, EUR, or BRL |
valid_until | string | No | Expiration date (YYYY-MM-DD) |
Example
curl -X POST https://services.gitscrum.com/proposals \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"title": "E-commerce Platform Redesign",
"company_slug": "acme",
"contact_company_uuid": "client-abc-123",
"content": "## Scope\n\nComplete redesign of the e-commerce platform.",
"total_amount": 45000,
"currency": "USD",
"valid_until": "2026-04-01"
}'Update proposal
PUT /proposals/{uuid}Updates an existing proposal.
Path parameters
| Parameter | Type | Description |
|---|---|---|
uuid | string | Proposal UUID |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
company_slug | string | Yes | Workspace identifier |
title | string | No | Proposal title |
content | string | No | Proposal body (markdown) |
total_amount | number | No | Total value |
currency | string | No | Currency code |
valid_until | string | No | Expiration date |
Send proposal
POST /proposals/{uuid}/send?company_slug={slug}Sends the proposal to the client.
Path parameters
| Parameter | Type | Description |
|---|---|---|
uuid | string | Proposal UUID |
Approve proposal
POST /proposals/{uuid}/approve?company_slug={slug}Marks the proposal as approved.
Path parameters
| Parameter | Type | Description |
|---|---|---|
uuid | string | Proposal UUID |
Reject proposal
POST /proposals/{uuid}/reject?company_slug={slug}Marks the proposal as rejected.
Path parameters
| Parameter | Type | Description |
|---|---|---|
uuid | string | Proposal UUID |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
reason | string | No | Rejection reason |
Delete proposal
DELETE /proposals/{uuid}?company_slug={slug}Permanently deletes a proposal.
Path parameters
| Parameter | Type | Description |
|---|---|---|
uuid | string | Proposal UUID |
Convert to project
POST /proposals/{uuid}/convert-to-project?company_slug={slug}Converts an approved proposal into a project.
Path parameters
| Parameter | Type | Description |
|---|---|---|
uuid | string | Proposal UUID (must be approved) |
Response
{
"data": {
"proposal_uuid": "prop-abc-123",
"project": {
"slug": "e-commerce-platform-redesign",
"name": "E-commerce Platform Redesign"
}
}
}Proposal lifecycle
draft → sent → approved → converted to project
↘ rejected- Create — proposal starts as
draft - Send — delivers to client, changes status to
sent - Approve/Reject — client decision recorded
- Convert — approved proposal becomes a project
Field reference
| Field | Type | Description |
|---|---|---|
uuid | string | Proposal unique identifier |
title | string | Proposal title |
status | string | draft, sent, approved, or rejected |
client | object | Associated client |
content | string | Proposal body (markdown) |
total_amount | number | Total proposed value |
currency | string | Currency code (USD/EUR/BRL) |
valid_until | string | Expiration date |
sent_at | datetime | When the proposal was sent |
approved_at | datetime | When the proposal was approved |
rejected_at | datetime | When the proposal was rejected |
reason | string | Rejection reason |
created_at | datetime | Record creation timestamp |