/teams
Create team. Partner and property-manager teams have their own subscription created with the team, even while onboarding. The forwarding gateway requires an explicit ap, eu, hostaway, or us dataRegion for General Ledger creation. A strict regional worker may omit dataRegion to use its own cell; an explicit region must match that cell. Crunchy placement is rejected. Hostaway property-manager teams must use the hostaway region. Non-General Ledger teams default to crunchy when dataRegion is omitted; other explicit regions are rejected. A regional worker returns 421 when the resolved region does not match its cell. Partner provisioning requires a uniqueRef. An exact repeat of a completed provision fails with 409 and context.existingTeamId identifies the existing team; changed retry payloads fail without it. Fetch that team with GET /me/teams or GET /partner/teams instead of creating it again. Retrying a provisioning request that failed before completing is safe. migratedFromTenantId atomically links a new GL team to a non-GL VRI source managed by the same partner in any data region; it is rejected for non-GL targets, GL sources, and sources managed by another partner. Generated and explicit slugs are checked against the global tenant registry and target region before either identity is published. Incomplete provisions are omitted from partner discovery. defaultCurrency must exist in the target region currency catalog; unsupported values return 400 before creation. An explicit General Ledger copyFromTeamId must use the target data region; a mismatch returns 400 before either tenant registry is written. New General Ledger teams without a copy source, or copying from the VRPlatform team, bootstrap every included part from the published Control Plane template; creation fails before the team exists when no template is published.
Required scope: teams:provision
Authorization
apiKey API key provided in dashboard
In: header
Request Body
application/json
The managing partner's stable identifier for the team, unique per partner. Set it with POST /teams or PUT /team.
"ap" | "crunchy" | "eu" | "hostaway" | "us""partner" | "admin" | "propertyManager"Lifecycle status derived from the team and billing-partner subscription states
"active" | "inactive"Whether onboarding is in progress. Defaults to false when creating a team.
VRI source team replaced by this new GL team. The source must be a non-GL team managed by the same partner.
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$uuidMembers to add to the new team. A listed member of the managing partner with selected-team reach also gets the new team added to that reach.
^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$emailResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://api.vrplatform.app/teams" \ -H "Content-Type: application/json" \ -d '{ "name": "string", "email": "user@example.com" }'{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"uniqueRef": "string",
"dataRegion": "ap",
"storageRealm": "vrintegration",
"defaultCurrency": "string",
"longTermStayNights": 0,
"defaultRevenueRecognition": "checkIn",
"migratedFromTenantId": "cc45f885-c973-4e0e-8e0d-b63cf61a5091",
"historicalStatementsImportedAt": "2024-01-15T12:30:00.000+00:00",
"name": "string",
"slug": "string",
"statementAddress": {
"full": "string",
"line1": "string",
"line2": "string",
"city": "string",
"state": "string",
"postalCode": "string",
"stateCode": "string",
"countryCode": "string"
},
"billingAddress": {
"full": "string",
"line1": "string",
"line2": "string",
"city": "string",
"state": "string",
"postalCode": "string",
"stateCode": "string",
"countryCode": "string"
},
"addressCountry": "string",
"phone": "string",
"email": "string",
"supportEmail": "string",
"taxId": "string",
"partner": {
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"name": "string"
},
"billingPartner": {
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"name": "string"
},
"billingPartnerId": "923c9e6a-7971-4599-a964-4e4ec88578c6",
"companyName": "string",
"type": "partner",
"status": "active",
"capabilities": {
"activate": {
"enabled": true,
"disabledReasons": [
"teamBillingSubscriptionInactive"
]
}
},
"billingSubscriptionStatus": "string",
"billingPlan": "string",
"billingPaymentMethodType": "string",
"billingCustomerId": "string",
"billingSubscriptionId": "string",
"colorPrimary": "string",
"createdAt": "2024-01-15T12:30:00.000+00:00",
"updatedAt": "2024-01-15T12:30:00.000+00:00",
"cancelledAt": "string",
"isOnboarding": true,
"isTest": true,
"issues": [
{
"code": "unassignedAccount",
"severity": "error",
"context": {
"accountIds": [
"string"
]
}
}
],
"isGeneralLedger": true,
"isOpex": true,
"booksClosedAt": "string",
"logo": "string",
"statementStartAt": "string",
"effectiveStatementStartAt": "string",
"settings": {
"showVRPilotGuide": true,
"showReservations": true,
"showCancelledReservations": true,
"showReservationTotal": true,
"showGuestName": true,
"showOwnerCalendarBlocking": true,
"showTaxStatements": true,
"showTwoFactorAuth": true,
"showOwnerDashboard": true,
"showOwnerDashboardNetIncome": true,
"showOwnerDashboardExpenses": true,
"showOwnerDashboardStats": true,
"showOwnerDashboardMonthlyPerformance": true,
"showOwnerDashboardFutureRevenue": true,
"showOwnerDashboardOccupancy": true,
"showOwnerDashboardReservations": true,
"showOwnerDashboardDraftStatements": true
},
"ownerPortalShowDraftStatements": true,
"members": [
{
"userId": "string",
"email": "string",
"role": "string",
"name": "string",
"firstName": "string",
"lastName": "string"
}
],
"extractableConnections": {
"property1": {
"connections": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"name": "string",
"appId": "string",
"urlExample": "string",
"allowConfirmationCode": true,
"flowIds": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
]
}
]
},
"property2": {
"connections": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"name": "string",
"appId": "string",
"urlExample": "string",
"allowConfirmationCode": true,
"flowIds": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
]
}
]
}
},
"enabledFeatures": [
{
"featureId": "317f79d2-08bf-4d22-9731-b2b5e1f0a085",
"status": "all"
}
],
"operations": {
"counts": {
"total": 9007199254740991,
"queued": 9007199254740991,
"running": 9007199254740991,
"completed": 9007199254740991,
"failed": 9007199254740991
},
"items": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"type": "ach-verification",
"status": "queued",
"resource": {
"type": "bank-rule",
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"role": "source",
"url": "http://example.com"
},
"failure": {
"code": "csvBlankHeader",
"message": "CSV contains a blank header"
},
"initiator": {
"type": "user",
"userId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b"
},
"createdAt": "2024-01-15T12:30:00.000+00:00",
"startedAt": "2024-01-15T12:30:00.000+00:00",
"finishedAt": "2024-01-15T12:30:00.000+00:00"
}
]
},
"aggregates": {
"activeListings": 9007199254740991,
"totalListings": 9007199254740991,
"members": 9007199254740991,
"activeConnections": 9007199254740991,
"connectionIssues": 9007199254740991,
"childTeams": 9007199254740991
}
}{
"code": "AUDIT_CURSOR_EXPIRED",
"reason": "accountClassificationLocked",
"message": "string",
"links": {
"docs": "string",
"schema": "string"
},
"issues": [
{
"code": "duplicateLast4",
"message": "string",
"path": [
"string"
],
"schema": "string"
}
],
"retryable": true,
"context": null
}{
"code": "AUDIT_CURSOR_EXPIRED",
"reason": "accountClassificationLocked",
"message": "string",
"links": {
"docs": "string",
"schema": "string"
},
"issues": [
{
"code": "duplicateLast4",
"message": "string",
"path": [
"string"
],
"schema": "string"
}
],
"retryable": true,
"context": null
}{
"code": "AUDIT_CURSOR_EXPIRED",
"reason": "accountClassificationLocked",
"message": "string",
"links": {
"docs": "string",
"schema": "string"
},
"issues": [
{
"code": "duplicateLast4",
"message": "string",
"path": [
"string"
],
"schema": "string"
}
],
"retryable": true,
"context": null
}{
"code": "AUDIT_CURSOR_EXPIRED",
"reason": "accountClassificationLocked",
"message": "string",
"links": {
"docs": "string",
"schema": "string"
},
"issues": [
{
"code": "duplicateLast4",
"message": "string",
"path": [
"string"
],
"schema": "string"
}
],
"retryable": true,
"context": null
}{
"code": "AUDIT_CURSOR_EXPIRED",
"reason": "accountClassificationLocked",
"message": "string",
"links": {
"docs": "string",
"schema": "string"
},
"issues": [
{
"code": "duplicateLast4",
"message": "string",
"path": [
"string"
],
"schema": "string"
}
],
"retryable": true,
"context": null
}{
"code": "AUDIT_CURSOR_EXPIRED",
"reason": "accountClassificationLocked",
"message": "string",
"links": {
"docs": "string",
"schema": "string"
},
"issues": [
{
"code": "duplicateLast4",
"message": "string",
"path": [
"string"
],
"schema": "string"
}
],
"retryable": true,
"context": null
}{
"code": "AUDIT_CURSOR_EXPIRED",
"reason": "accountClassificationLocked",
"message": "string",
"links": {
"docs": "string",
"schema": "string"
},
"issues": [
{
"code": "duplicateLast4",
"message": "string",
"path": [
"string"
],
"schema": "string"
}
],
"retryable": true,
"context": null
}{
"code": "MISDIRECTED_REQUEST",
"reason": "accountClassificationLocked",
"message": "string",
"links": {
"docs": "string",
"schema": "string"
},
"issues": [
{
"code": "duplicateLast4",
"message": "string",
"path": [
"string"
],
"schema": "string"
}
],
"retryable": true,
"context": {
"teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
"dataRegion": "ap",
"apiBaseUrl": "http://example.com"
}
}{
"code": "AUDIT_CURSOR_EXPIRED",
"reason": "accountClassificationLocked",
"message": "string",
"links": {
"docs": "string",
"schema": "string"
},
"issues": [
{
"code": "duplicateLast4",
"message": "string",
"path": [
"string"
],
"schema": "string"
}
],
"retryable": true,
"context": null
}{
"code": "LOCKED",
"reason": "accountClassificationLocked",
"message": "string",
"links": {
"docs": "string",
"schema": "string"
},
"issues": [
{
"code": "duplicateLast4",
"message": "string",
"path": [
"string"
],
"schema": "string"
}
],
"retryable": true,
"context": null
}{
"code": "AUDIT_CURSOR_EXPIRED",
"reason": "accountClassificationLocked",
"message": "string",
"links": {
"docs": "string",
"schema": "string"
},
"issues": [
{
"code": "duplicateLast4",
"message": "string",
"path": [
"string"
],
"schema": "string"
}
],
"retryable": true,
"context": null
}{
"code": "AUDIT_CURSOR_EXPIRED",
"reason": "accountClassificationLocked",
"message": "string",
"links": {
"docs": "string",
"schema": "string"
},
"issues": [
{
"code": "duplicateLast4",
"message": "string",
"path": [
"string"
],
"schema": "string"
}
],
"retryable": true,
"context": null
}