logo
🤖 For developersAPI documentation

API documentation

Technical documentation for integrating with Endre.

Endre API provides project-related data for authenticated users. This API is RESTful and supports standard HTTP methods like GET, POST, and PATCH.

Authentication

/token

Obtain a Bearer token using username and password.

  • Input: OAuth2 credentials (username, password)

  • Output: JWT access token

Endpoints

All endpoints can be tested here: https://public-api.endre.app/docs

Fetch User Projects

GET/v1/projects

Description Retrieve the list of projects the authenticated user has access to.

Response

  • List of projects with:

    • Id (UUID): Unique project identifier

    • Name (string): [ProjectNumber] - [ProjectName]

    • ProjectName (string): Project name

    • ProjectNumber (string): Project number

    • IsFinished (boolean): Indicates if the project is finished

Empty Case Returns a 404 error if no projects are available.

Create Project

POST/v1/projects

Description Create a project.

Parameters

  • project_name (string): Project name

  • organization_id (UUID): Organization identifier (from /v1/organizations)

  • email (string, optional): Project administrator email

  • project_number (string, optional): Project number

Update Project

PATCH/v1/projects

Description Update a project.

Request Body

  • project_name (string, optional)

  • project_number (string, optional)

  • is_finished (boolean, optional):

    • true = finished

    • false = not finished

Fetch Project Details

GET/v1/projects/{project_id}

Description Retrieve details for a specific project.

Input

  • project_id (UUID)

Response

  • Id (UUID)

  • Name (string): [ProjectNumber] - [ProjectName]

  • ProjectName (string)

  • ProjectNumber (string)

  • IsFinished (boolean)

Access Validation

  • Returns 403 if user lacks access

Fetch Project Organizations

GET/v1/projects/{project_id}/organizations

Description Retrieve all organizations on a project.

Response

  • Id (UUID): Project organization ID

  • Name (string)

  • OrganizationNumber (string)

  • Role (string):

    • Contractor

    • Subcontractor

    • Builder

  • OrganizationId (UUID)

Fetch Specific Project Organization

GET/v1/projects/{project_id}/organizations/{project_organization_id}

Description Retrieve a specific organization on a project.

Input

  • project_id (UUID)

  • project_organization_id (UUID)

Response

  • Id (UUID)

  • Name (string)

  • OrganizationNumber (string)

  • Role (string)

  • OrganizationId (UUID)

Fetch Cases for a Project

GET/v1/projects/{project_id}/cases

Description Retrieve cases (change logs) for a project.

Response Each case includes:

  • Id (UUID)

  • CaseNumber (string)

  • Title (string)

  • Sender (string)

  • SenderId (UUID)

  • Receiver (string)

  • ReceiverId (UUID)

  • Type (string):

    • Notice, Claim, Change Order, Price Request, Technical Clarification, Builder Message
  • Status (string):

    • New, In Progress, Accepted, Rejected, Draft, etc.
  • DueDate (datetime)

  • Version (int)

  • Description (HTML string)

  • CreatedDate (datetime)

  • ModifiedDate (datetime)

  • TotalAmount (decimal)

  • AcceptedAmount (decimal)

  • DeclinedAmount (decimal)

  • NotHandledAmount (decimal)

  • EstimatedAmount (decimal)

  • InvoicedAmount (decimal)

  • IsArchived (boolean)

  • RelatedCases (UUID[])

Access Validation

  • Returns 403 if unauthorized

Fetch Amounts for a Project

GET/v1/projects/{project_id}/amounts

Description Retrieve aggregated amounts by month.

Input

  • start_date (optional, yyyy-mm-dd)

  • end_date (optional)

  • case_types (optional):

    • 1 = Notice

    • 2 = Claim

    • 3 = Change Order

    • 4 = Price Request

    • 5 = Technical Clarification

    • 6 = Builder Message

    • 7 = Contract

Response

  • ProjectId (UUID)

  • Year (int)

  • Month (int)

  • TotalAmount (decimal)

  • TotalAcceptedAmount (decimal)

  • TotalDeclinedAmount (decimal)

  • TotalNotHandledAmount (decimal)

Fetch Cost Items

GET/v1/projects/{project_id}/cases/{case_id}/cost-items

Response

  • PostNr (string)

  • Description (string)

  • Company (string)

  • Unit (string)

  • Volume (decimal)

  • UnitPrice (decimal)

  • Surcharge (decimal)

  • Sum (decimal)

  • Status (string)

  • IsEstimate (boolean)

Fetch Tags for a Case

GET/v1/projects/{project_id}/cases/{case_id}/tags

Response

  • Text (string)

Fetch Production Codes

GET/v1/projects/{project_id}/cases/{case_id}/prod-codes

Response

  • Code (string)

Fetch Invoices

GET/v1/projects/{project_id}/cases/{case_id}/invoices

Response

  • InvoiceNumber (string)

  • CaseNumber (string)

  • Amount (string)

  • InvoiceDate (string)

  • DueDate (string)

  • PayDate (string)

Fetch External References

GET/v1/projects/{project_id}/cases/{case_id}/external-references

Response

  • Name (string)

  • Url (string)

  • Description (string)

  • Version (integer)

Fetch Relations

GET/v1/projects/{project_id}/cases/{case_id}/relations

Response

  • CaseNumber (string)

  • Type (string)

Fetch Organizations

GET/v1/organizations

Response

  • Id (UUID)

  • Name (string)

Fetch Specific Organization

GET/v1/organizations/{organization_id}

Response

  • Id (UUID)

  • Name (string)

Authorization

All endpoints require a valid JWT Bearer token obtained via the /token endpoint.

Was this page helpful?

Last updated Apr 15, 2026

Built with Documentation.AI