Managry API (1.109.0+71)

Download OpenAPI specification:

Managry Support: support@managry.com URL: https://managry.com/support/ License: MIT

Managry API supports time, attendance, and expense management for the Current Timesheets and Traverse applications.

The API primarily sends and receives JSON objects represented as versioned data transfer objects (DTOs). Each DTO version has its own MIME type, and clients should use the latest available version.

For requests with a body, use the Content-Type header to declare the DTO MIME type being sent. Use the Accept header to list one or more DTO MIME types that the client can receive in the response.

This versioning model keeps client integrations stable while Managry adds new DTO versions. Older DTO versions are generally retained, so API integrations can remain reliable for years.

Quick start:

Login request (simple):

curl --request POST "https://managry.io/v1/auth/login" \
  --data-raw '{
    "email": "user@example.com",
    "password": "MySecurePassword123"
  }'

Login request (long-term compatibility with DTO headers):

curl --request POST "https://managry.io/v1/auth/login" \
  --header "Content-Type: application/vnd.managry.AuthLoginRequestDto1+json" \
  --header "Accept: application/vnd.managry.AuthLoginResponseDto1+json" \
  --data-raw '{
    "email": "user@example.com",
    "password": "MySecurePassword123"
  }'

User list request (replace <idToken> with token from login):

curl --get "https://managry.io/v1/entities/user" \
  --header "Authorization: Bearer <idToken>" \
  --header "X-Product: timesheets" \
  --header "Accept: application/vnd.managry.EntityMetadataDto3List+json" \
  --data-urlencode "pageSize=100" \
  --data-urlencode "pageNumber=0"

Authentication

Authentication is the process of verifying the identity of a user. This process is necessary to ensure that the user is who they claim to be.

Authenticate user

Authenticates a user with email and password and returns a Firebase ID token (idToken) for subsequent authenticated API requests.

Use this token in the Authorization header for protected endpoints: Authorization: Bearer <idToken>.

header Parameters
Accept
string

Specifies the media types that the client can process. The server will respond with content in one of these types if possible.

If the header is missing, the endpoint returns the latest available data transfer object representation. (Some endpoints might return a specific default version instead of the latest, for compatibility reasons.)

If none of the provided MIME types are supported by the server, it will return a 415 Unsupported Media Type response.

Content-Type
string

Specifies the media type of the request body.

If omitted, the latest supported login request DTO MIME type is used.

Request Body schema: application/vnd.managry.AuthLoginRequestDto1+json
required

User email and password credentials

email
required
string

The user's registered email address. Must be a valid email format. Email matching is case-insensitive.

password
required
string

The user's password in plain text. The password is transmitted over HTTPS and hashed on the server for secure storage.

Users who authenticate through Google or Apple sign-in can optionally set a password on the My Profile screen, allowing them to also log in using email and password credentials.

Responses

Request samples

Content type
application/vnd.managry.AuthLoginRequestDto1+json
{
  • "email": "user@example.com",
  • "password": "MySecurePassword123"
}

Response samples

Content type
application/vnd.managry.AuthLoginResponseDto1+json
{
  • "idToken": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzI5MTI4MzV9.mLGSdu0eJkXoxYyYPuH9U7uTl9RdQpjtL1vntuNzHw9SFYV3M_GBSZhnvkwkZMm5qIU7klEPpWHEkD9oNsS3o6FkvWm9mWeQKLz95A6Okb2fMoe2T1jAw5z2hNRhMs1xpLEvyC6GNvGtygi4BGds8voG2twfeu_UlqsCTc7YbYh6mT6yvr381JtxKUJ9s3xehX8i0CO_ZuU5nhM1nkrDiyoF8SaM4FW10DseeG0a5eV3IKr00vCHpjy58zc01vVlKRR2BnNBSH-_iDzrKFI6TBiFapOPbvV3tNfFrivwBBeQ8QDdl0XCnGay8WmlCYkxcbYpTm8eHt40C0SYA74ZoA",
  • "expires": "2024-03-08T15:32:25Z"
}

Get current user

Returns the profile information of the currently authenticated user.

Authorizations:
Bearer
header Parameters
Accept
string

Specifies the media types that the client can process. The server will respond with content in one of these types if possible.

If the header is missing, the endpoint returns the latest available data transfer object representation. (Some endpoints might return a specific default version instead of the latest, for compatibility reasons.)

If none of the provided MIME types are supported by the server, it will return a 415 Unsupported Media Type response.

Responses

Response samples

Content type
application/vnd.managry.AuthWhoamiResponseDto1+json
{
  • "id": "123e4567-e89b-12d3-a456-426614174000",
  • "email": "user@example.com",
  • "name": {
    }
}

Commands

Commands are the primary way to interact with the system. All changes to the system, including entities, are made through commands.

Apply a command

This endpoint receives a command and applies it to the system.

There are many types of commands, each with its own set of parameters. The command type is specified in the mime type of the request. Therefore, the endpoint supports many mime types. The command parameters are specified in the request body.

Authorizations:
Bearer
header Parameters
Accept
string

Specifies the media types that the client can process. The server will respond with content in one of these types if possible.

If the header is missing, the endpoint returns the latest available data transfer object representation. (Some endpoints might return a specific default version instead of the latest, for compatibility reasons.)

If none of the provided MIME types are supported by the server, it will return a 415 Unsupported Media Type response.

Content-Type
required
string

Specifies the media type of the request body.

Set this header to one of the MIME types listed in the request body schema section for the endpoint.

This endpoints supports many MIME types, each corresponding to a different command. It requires the client to specify the MIME type of the command being sent to ensure correct processing of the request body.

X-Product
required
string
Enum: "timesheets" "traverse" "console" "traverseOcrScans" "traverseFileStorage"
Example: traverse

Identifies the calling Managry product.

This header is required for protected endpoints to resolve product context. Integrators should set this value to the product they are integrating with. A valid subscription for the specified product is required to access protected endpoints.

Request Body schema:
required
dateTime
required
string <date-time>

The time when the command was created. This is the local time on the device in UTC format. It might differ from server time.

audioRecordId
required
string <uuid>
blobId
required
string <uuid>
userId
required
string <uuid>
duration
required
integer <int64>

Responses

Request samples

Content type
{
  • "dateTime": "2019-08-24T14:15:22Z",
  • "audioRecordId": "ccf44280-6216-4de1-a6db-82d91a3891c5",
  • "blobId": "0f49f85e-7d44-46b5-bdff-ecf86c7fc0da",
  • "userId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b",
  • "duration": 0
}

Response samples

Content type
[
  • {
    }
]

Entities

Entities are the primary way to interact with the system. All data in the system is stored in entities. Entities are created, updated, and deleted through commands.

List entity metadata

Returns metadata for entities of the requested type.

The result is paginated and sorted by serverTime in ascending order. Query parameters:

  • pageSize defaults to 100.
  • pageNumber defaults to 0.

The endpoint returns metadata only (entityType, id, serverTime), not full entity payloads.

Authorizations:
Bearer
path Parameters
entityType
required
string (EntityTypeDto1)
Enum: "attendanceTenant" "attendanceUser" "audioRecord" "automaticBreak" "blackoutDate" "companyWideLeave" "contract" "costCodeChange" "costCode" "currency" "dailyAllowanceLocation" "expenseCategory" "expenseGroup" "expenseReport" "jobRoleChange" "jobRole" "mileageRate" "note" "overtimeType" "paymentMethod" "picture" "position" "publicHoliday" "shift" "blob" "feedback" "notification" "productVariant" "subscription" "teamCustomRole" "team" "tenant" "userCustomRole" "user"

Name of the entity to retrieve.

query Parameters
pageSize
integer <int32> [ 1 .. 500 ]
Default: 100

Number of items to return in one page.

pageNumber
integer <int32> [ 0 .. 1000000 ]
Default: 0

Zero-based page index.

header Parameters
Accept
string

Specifies the media types that the client can process. The server will respond with content in one of these types if possible.

If the header is missing, the endpoint returns the latest available data transfer object representation. (Some endpoints might return a specific default version instead of the latest, for compatibility reasons.)

If none of the provided MIME types are supported by the server, it will return a 415 Unsupported Media Type response.

X-Product
required
string
Enum: "timesheets" "traverse" "console" "traverseOcrScans" "traverseFileStorage"
Example: traverse

Identifies the calling Managry product.

This header is required for protected endpoints to resolve product context. Integrators should set this value to the product they are integrating with. A valid subscription for the specified product is required to access protected endpoints.

Responses

Response samples

Content type
[
  • {
    }
]

Get entity

Get an entity by its ID.

Authorizations:
Bearer
path Parameters
entityType
required
string (EntityTypeDto1)
Enum: "attendanceTenant" "attendanceUser" "audioRecord" "automaticBreak" "blackoutDate" "companyWideLeave" "contract" "costCodeChange" "costCode" "currency" "dailyAllowanceLocation" "expenseCategory" "expenseGroup" "expenseReport" "jobRoleChange" "jobRole" "mileageRate" "note" "overtimeType" "paymentMethod" "picture" "position" "publicHoliday" "shift" "blob" "feedback" "notification" "productVariant" "subscription" "teamCustomRole" "team" "tenant" "userCustomRole" "user"

Name of the entity to retrieve.

entityId
required
string <uuid>

The id of the entity to retrieve

header Parameters
Accept
string

Specifies the media types that the client can process. The server will respond with content in one of these types if possible.

If the header is missing, the endpoint returns the latest available data transfer object representation. (Some endpoints might return a specific default version instead of the latest, for compatibility reasons.)

If none of the provided MIME types are supported by the server, it will return a 415 Unsupported Media Type response.

X-Product
required
string
Enum: "timesheets" "traverse" "console" "traverseOcrScans" "traverseFileStorage"
Example: traverse

Identifies the calling Managry product.

This header is required for protected endpoints to resolve product context. Integrators should set this value to the product they are integrating with. A valid subscription for the specified product is required to access protected endpoints.

Request Body schema: application/json
Schema not provided

Responses

Response samples

Content type
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "createTime": "2019-08-24T14:15:22Z",
  • "updateTime": "2019-08-24T14:15:22Z",
  • "serverTime": "2019-08-24T14:15:22Z",
  • "tenantId": "f97df110-f4de-492e-8849-4a6af68026b0",
  • "clockInPhotoRequired": true,
  • "clockOutPhotoRequired": true,
  • "clockInOutLocationStored": true,
  • "autoArchiveExpenseGroups": true,
  • "autoArchiveExpenseGroupDayCount": 0,
  • "stableHashCode": 0
}