OpenAPI 3.1.0

LOCURA Hub API

Central hub for LOCURA ecosystem - clients, files (R2), API keys, webhooks, usage tracking

Version
1.0.0
Operations
12
Server
https://hub.locura.tech
Download JSON

Showing 12 of 12 operations

get/api/v1/changelog

API changelog

MetaPublic
Schema details

Responses

{
  "200": {
    "description": "Success"
  },
  "401": {
    "description": "Unauthorized - missing or invalid API key"
  },
  "403": {
    "description": "Forbidden - missing required scope"
  },
  "429": {
    "description": "Rate limit exceeded"
  },
  "500": {
    "description": "Internal server error"
  }
}
get/api/v1/clients

List clients

List all clients with pagination and optional search by name

ClientsBearer API keyhub:clients:read
Schema details

Responses

{
  "200": {
    "description": "Success"
  },
  "401": {
    "description": "Unauthorized - missing or invalid API key"
  },
  "403": {
    "description": "Forbidden - missing required scope"
  },
  "429": {
    "description": "Rate limit exceeded"
  },
  "500": {
    "description": "Internal server error"
  }
}
get/api/v1/clients/{id}

Get client details

Get detailed information about a specific client

ClientsBearer API keyhub:clients:read
Schema details

Responses

{
  "200": {
    "description": "Success"
  },
  "401": {
    "description": "Unauthorized - missing or invalid API key"
  },
  "403": {
    "description": "Forbidden - missing required scope"
  },
  "429": {
    "description": "Rate limit exceeded"
  },
  "500": {
    "description": "Internal server error"
  }
}
get/api/v1/clients/{id}/files

List client files from R2

List files stored in R2 for a client. Use ?folder=all for all folders or specify a folder name.

FilesBearer API keyhub:files:read
Schema details

Responses

{
  "200": {
    "description": "Success"
  },
  "401": {
    "description": "Unauthorized - missing or invalid API key"
  },
  "403": {
    "description": "Forbidden - missing required scope"
  },
  "429": {
    "description": "Rate limit exceeded"
  },
  "500": {
    "description": "Internal server error"
  }
}
put/api/v1/clients/{id}/files

Upload file to R2

Upload a file to R2 storage. Send base64-encoded data with path and contentType.

FilesBearer API keyhub:files:write
Schema details

Responses

{
  "200": {
    "description": "Success"
  },
  "401": {
    "description": "Unauthorized - missing or invalid API key"
  },
  "403": {
    "description": "Forbidden - missing required scope"
  },
  "429": {
    "description": "Rate limit exceeded"
  },
  "500": {
    "description": "Internal server error"
  }
}
get/api/v1/clients/{id}/files/{key}

Download file

Download a specific file from R2 by its key path

FilesBearer API keyhub:files:read
Schema details

Responses

{
  "200": {
    "description": "Success"
  },
  "401": {
    "description": "Unauthorized - missing or invalid API key"
  },
  "403": {
    "description": "Forbidden - missing required scope"
  },
  "429": {
    "description": "Rate limit exceeded"
  },
  "500": {
    "description": "Internal server error"
  }
}
post/api/v1/data-erasure

Request data erasure (GDPR)

GDPRBearer API keyhub:gdpr:manage
Schema details

Responses

{
  "200": {
    "description": "Success"
  },
  "401": {
    "description": "Unauthorized - missing or invalid API key"
  },
  "403": {
    "description": "Forbidden - missing required scope"
  },
  "429": {
    "description": "Rate limit exceeded"
  },
  "500": {
    "description": "Internal server error"
  }
}
post/api/v1/data-export

Request data export (GDPR)

GDPRBearer API keyhub:gdpr:manage
Schema details

Responses

{
  "200": {
    "description": "Success"
  },
  "401": {
    "description": "Unauthorized - missing or invalid API key"
  },
  "403": {
    "description": "Forbidden - missing required scope"
  },
  "429": {
    "description": "Rate limit exceeded"
  },
  "500": {
    "description": "Internal server error"
  }
}
get/api/v1/health

Health check

MetaPublic
Schema details

Responses

{
  "200": {
    "description": "Success"
  },
  "401": {
    "description": "Unauthorized - missing or invalid API key"
  },
  "403": {
    "description": "Forbidden - missing required scope"
  },
  "429": {
    "description": "Rate limit exceeded"
  },
  "500": {
    "description": "Internal server error"
  }
}
post/api/v1/sandbox/reset

Reset sandbox data

SandboxBearer API keyhub:keys:manage
Schema details

Responses

{
  "200": {
    "description": "Success"
  },
  "401": {
    "description": "Unauthorized - missing or invalid API key"
  },
  "403": {
    "description": "Forbidden - missing required scope"
  },
  "429": {
    "description": "Rate limit exceeded"
  },
  "500": {
    "description": "Internal server error"
  }
}
get/api/v1/usage

API usage stats

Get usage statistics aggregated by day with optional date range filtering

UsageBearer API keyhub:usage:read
Schema details

Responses

{
  "200": {
    "description": "Success"
  },
  "401": {
    "description": "Unauthorized - missing or invalid API key"
  },
  "403": {
    "description": "Forbidden - missing required scope"
  },
  "429": {
    "description": "Rate limit exceeded"
  },
  "500": {
    "description": "Internal server error"
  }
}
get/api/v1/usage/audit-log

Audit log

View API audit trail with pagination

UsageBearer API keyhub:audit:read
Schema details

Responses

{
  "200": {
    "description": "Success"
  },
  "401": {
    "description": "Unauthorized - missing or invalid API key"
  },
  "403": {
    "description": "Forbidden - missing required scope"
  },
  "429": {
    "description": "Rate limit exceeded"
  },
  "500": {
    "description": "Internal server error"
  }
}