GitScrum / Docs

Proposals

Create, send, and manage proposals. Approve, reject, and convert proposals into projects.

REST API — All endpoints require authentication via Bearer token. Include Authorization: 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

ParameterTypeDescription
company_slugstringWorkspace identifier
statusstringFilter: draft, sent, approved, rejected
client_uuidstringFilter 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

ParameterTypeDescription
uuidstringProposal 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 /proposals

Creates a new proposal in draft status.

Request body

FieldTypeRequiredDescription
titlestringYesProposal title
company_slugstringYesWorkspace identifier
contactcompanyuuidstringNoClient UUID
contentstringNoProposal body (markdown)
total_amountnumberNoTotal value
currencystringNoUSD, EUR, or BRL
valid_untilstringNoExpiration 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

ParameterTypeDescription
uuidstringProposal UUID

Request body

FieldTypeRequiredDescription
company_slugstringYesWorkspace identifier
titlestringNoProposal title
contentstringNoProposal body (markdown)
total_amountnumberNoTotal value
currencystringNoCurrency code
valid_untilstringNoExpiration date

Send proposal

POST /proposals/{uuid}/send?company_slug={slug}

Sends the proposal to the client.

Path parameters

ParameterTypeDescription
uuidstringProposal UUID

Approve proposal

POST /proposals/{uuid}/approve?company_slug={slug}

Marks the proposal as approved.

Path parameters

ParameterTypeDescription
uuidstringProposal UUID

Reject proposal

POST /proposals/{uuid}/reject?company_slug={slug}

Marks the proposal as rejected.

Path parameters

ParameterTypeDescription
uuidstringProposal UUID

Request body

FieldTypeRequiredDescription
reasonstringNoRejection reason

Delete proposal

DELETE /proposals/{uuid}?company_slug={slug}

Permanently deletes a proposal.

Path parameters

ParameterTypeDescription
uuidstringProposal UUID

Convert to project

POST /proposals/{uuid}/convert-to-project?company_slug={slug}

Converts an approved proposal into a project.

Path parameters

ParameterTypeDescription
uuidstringProposal 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
  1. Create — proposal starts as draft
  2. Send — delivers to client, changes status to sent
  3. Approve/Reject — client decision recorded
  4. Convert — approved proposal becomes a project

Field reference

FieldTypeDescription
uuidstringProposal unique identifier
titlestringProposal title
statusstringdraft, sent, approved, or rejected
clientobjectAssociated client
contentstringProposal body (markdown)
total_amountnumberTotal proposed value
currencystringCurrency code (USD/EUR/BRL)
valid_untilstringExpiration date
sent_atdatetimeWhen the proposal was sent
approved_atdatetimeWhen the proposal was approved
rejected_atdatetimeWhen the proposal was rejected
reasonstringRejection reason
created_atdatetimeRecord creation timestamp