โœ… Logged in

Endpoint: POST https://la.deltascripts.com/api/v1/auth/login
Input:
{
    "email": "api@example.com",
    "password": "ApiTest123!"
}
Response:
Status: HTTP 200
{
    "token": "97c00afe418a36bf3362fd5bb7f4600db6fa5244b851e3ab32810eb85a9dfe0b",
    "user": {
        "id": 49,
        "email": "api@example.com",
        "name": "Updated Tester"
    },
    "expires_at": "2025-12-30 14:44:12"
}

๐Ÿ‘ค Create user

Endpoint: POST https://la.deltascripts.com/api/v1/users
Input:
{
    "email": "testuser844@example.com",
    "name": "Tester",
    "password": "Pass1234"
}
Response:
Status: HTTP 201
{
    "id": 73,
    "email": "testuser844@example.com",
    "name": "Tester",
    "is_active": 1,
    "created_at": "2025-12-23 14:44:12"
}

๐Ÿ‘ฅ List users

Endpoint: GET https://la.deltascripts.com/api/v1/users
Input: (none)
Response:
Status: HTTP 200
[
    {
        "id": 73,
        "email": "testuser844@example.com",
        "name": "Tester",
        "is_active": 1,
        "created_at": "2025-12-23 14:44:12"
    },
    {
        "id": 55,
        "email": "testuser653@example.com",
        "name": "Tester",
        "is_active": 1,
        "created_at": "2025-08-24 06:02:55"
    },
    {
        "id": 54,
        "email": "testuser529@example.com",
        "name": "Tester",
        "is_active": 1,
        "created_at": "2025-08-24 00:40:10"
    },
    {
        "id": 51,
        "email": "kontor@webspesialisten.no",
        "name": "Are Haugsdal",
        "is_active": 1,
        "created_at": "2025-08-23 21:02:53"
    },
    {
        "id": 49,
        "email": "api@example.com",
        "name": "Updated Tester",
        "is_active": 1,
        "created_at": "2025-08-23 19:16:40"
    },
    {
        "id": 1,
        "email": "admin@example.com",
        "name": "Admin User",
        "is_active": 1,
        "created_at": "2025-08-23 12:54:27"
    }
]

๐Ÿ‘ค Get user

Endpoint: GET https://la.deltascripts.com/api/v1/users/73
Input: (none)
Response:
Status: HTTP 200
{
    "id": 73,
    "email": "testuser844@example.com",
    "name": "Tester",
    "is_active": 1,
    "created_at": "2025-12-23 14:44:12"
}

โœ๏ธ Update user

Endpoint: PUT https://la.deltascripts.com/api/v1/users/73
Input:
{
    "name": "Tester Updated"
}
Response:
Status: HTTP 200
{
    "ok": true,
    "id": 73
}

๐Ÿ”‘ Update password

Endpoint: PUT https://la.deltascripts.com/api/v1/users/73/password
Input:
{
    "new_password": "NewPass1234"
}
Response:
Status: HTTP 200
{
    "ok": true,
    "message": "Password updated"
}

๐Ÿข Create customer

Endpoint: POST https://la.deltascripts.com/api/v1/customers
Input:
{
    "name": "TestCustomer"
}
Response:
Status: HTTP 201
{
    "id": 88,
    "name": "TestCustomer"
}

๐Ÿ“‹ List customers

Endpoint: GET https://la.deltascripts.com/api/v1/customers
Input: (none)
Response:
Status: HTTP 200
[
    {
        "id": 88,
        "name": "TestCustomer",
        "created_at": "2025-12-23 14:44:12"
    },
    {
        "id": 66,
        "name": "Webspesialisten AS",
        "created_at": "2025-08-23 21:02:52"
    },
    {
        "id": 1,
        "name": "Admin Group",
        "created_at": "2025-08-23 10:54:27"
    }
]

๐Ÿข Get customer

Endpoint: GET https://la.deltascripts.com/api/v1/customers/88
Input: (none)
Response:
Status: HTTP 200
{
    "id": 88,
    "name": "TestCustomer",
    "created_at": "2025-12-23 14:44:12"
}

โœ๏ธ Update customer

Endpoint: PUT https://la.deltascripts.com/api/v1/customers/88
Input:
{
    "name": "Customer Updated"
}
Response:
Status: HTTP 200
{
    "ok": true,
    "id": 88,
    "name": "Customer Updated"
}

๐Ÿ‘ฅ Add customer member

Endpoint: POST https://la.deltascripts.com/api/v1/customers/88/members
Input:
{
    "user_id": 73,
    "role": "admin"
}
Response:
Status: HTTP 200
{
    "ok": true
}

๐Ÿ‘ฅ List customer members

Endpoint: GET https://la.deltascripts.com/api/v1/customers/88/members
Input: (none)
Response:
Status: HTTP 200
[
    {
        "id": 63,
        "role": "admin",
        "user_id": 73,
        "email": "testuser844@example.com",
        "name": "Tester Updated"
    }
]

๐Ÿ“ฆ Create project

Endpoint: POST https://la.deltascripts.com/api/v1/projects
Input:
{
    "customer_id": 88,
    "name": "TestProjectStrings",
    "default_lang": "en"
}
Response:
Status: HTTP 201
{
    "id": 114,
    "name": "TestProjectStrings",
    "default_lang": "en"
}

๐Ÿ“‹ List projects

Endpoint: GET https://la.deltascripts.com/api/v1/projects
Input: (none)
Response:
Status: HTTP 200
[
    {
        "id": 114,
        "customer_id": 88,
        "name": "TestProjectStrings",
        "default_lang": "en",
        "created_at": "2025-12-23 14:44:13"
    },
    {
        "id": 102,
        "customer_id": 66,
        "name": "eAvtale",
        "default_lang": "en",
        "created_at": "2025-10-11 20:52:10"
    },
    {
        "id": 98,
        "customer_id": 66,
        "name": "Kundeweb",
        "default_lang": "en",
        "created_at": "2025-09-15 15:43:03"
    },
    {
        "id": 96,
        "customer_id": 66,
        "name": "InventarListen",
        "default_lang": "en",
        "created_at": "2025-08-24 16:13:03"
    },
    {
        "id": 64,
        "customer_id": 1,
        "name": "TestProjectStrings",
        "default_lang": "en",
        "created_at": "2025-08-23 19:45:26"
    }
]

๐Ÿ‘ฅ Add project member

Endpoint: POST https://la.deltascripts.com/api/v1/projects/114/members
Input:
{
    "user_id": 73,
    "role": "editor"
}
Response:
Status: HTTP 200
{
    "ok": true
}

๐Ÿ‘ฅ List project members

Endpoint: GET https://la.deltascripts.com/api/v1/projects/114/members
Input: (none)
Response:
Status: HTTP 200
[
    {
        "id": 92,
        "role": "editor",
        "user_id": 73,
        "email": "testuser844@example.com",
        "name": "Tester Updated"
    },
    {
        "id": 91,
        "role": "admin",
        "user_id": 49,
        "email": "api@example.com",
        "name": "Updated Tester"
    }
]

๐Ÿ“‚ Create area

Endpoint: POST https://la.deltascripts.com/api/v1/projects/114/areas
Input:
{
    "name": "admin"
}
Response:
Status: HTTP 500
{
    "error": "Database error",
    "detail": "SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '114-admin' for key 'areas.uniq_project_area'"
}

๐Ÿ“‚ Create section

Endpoint: POST https://la.deltascripts.com/api/v1/projects/114/areas/admin/sections
Input:
{
    "name": "categories"
}
Response:
Status: HTTP 201
{
    "id": 341,
    "name": "categories",
    "area": "admin",
    "message": "Section created successfully"
}

๐Ÿ“ Propose string

Endpoint: POST https://la.deltascripts.com/api/v1/projects/114/strings:propose
Input:
{
    "area": "admin",
    "section": "categories",
    "key": "admin.categories.title",
    "base_text": "Kategorier"
}
Response:
Status: HTTP 400
{
    "error": "Key can only contain lowercase letters a-z and underscores"
}

๐ŸŒ Upsert translation

Endpoint: POST https://la.deltascripts.com/api/v1/projects/114/translations:upsert
Input:
{
    "key": null,
    "lang": "nb",
    "text": "Ny kategori"
}
Response:
Status: HTTP 400
{
    "error": "key, lang, text required"
}

โœ… Approve translation

Endpoint: POST https://la.deltascripts.com/api/v1/projects/114/translations:approve
Input:
{
    "keys": [
        null
    ],
    "lang": "nb"
}
Response:
Status: HTTP 200
{
    "success": true,
    "message": "Translations approved successfully",
    "data": {
        "approved_count": 0,
        "approved_translations": [],
        "summary": {
            "total_requested": 1,
            "successfully_approved": 0,
            "language": "nb"
        }
    },
    "meta": {
        "approved_by": "Updated Tester",
        "approved_at": "2025-12-23 14:44:13"
    }
}

๐Ÿ” Version check

Endpoint: GET https://la.deltascripts.com/api/v1/projects/114/areas/admin/version?lang=nb
Input: (none)
Response:
Status: HTTP 200
{
    "version": 0,
    "checksum": null
}

๐Ÿ“ฆ Bundle fetch

Endpoint: GET https://la.deltascripts.com/api/v1/projects/114/areas/admin/sections/categories/bundle?lang=nb&since_version=0
Input: (none)
Response:
Status: HTTP 200
{
    "meta": {
        "project_id": 114,
        "area": "admin",
        "section": "categories",
        "lang": "nb",
        "version": 0,
        "checksum": null
    },
    "strings": []
}

๐Ÿ”‘ Lookup by key

Endpoint: GET https://la.deltascripts.com/api/v1/projects/114/strings?keys=&lang=nb
Input: (none)
Response:
Status: HTTP 200
[]

๐Ÿ“Š Stats overview

Endpoint: GET https://la.deltascripts.com/api/v1/stats/overview
Input: (none)
Response:
Status: HTTP 200
{
    "totalProjects": 2,
    "totalStrings": 0,
    "totalTranslations": 0,
    "projects": [
        {
            "id": 64,
            "name": "TestProjectStrings",
            "strings": 0,
            "translations": 0
        },
        {
            "id": 114,
            "name": "TestProjectStrings",
            "strings": 0,
            "translations": 0
        }
    ]
}

๐Ÿ“ˆ Project stats

Endpoint: GET https://la.deltascripts.com/api/v1/projects/114/stats
Input: (none)
Response:
Status: HTTP 200
{
    "totalStrings": 0,
    "lastModified": null,
    "languages": [],
    "areas": [
        {
            "name": "admin",
            "lastModified": null,
            "sections": [
                {
                    "name": "categories",
                    "lastModified": null,
                    "languages": []
                },
                {
                    "name": "dashboard",
                    "lastModified": null,
                    "languages": []
                },
                {
                    "name": "login",
                    "lastModified": null,
                    "languages": []
                },
                {
                    "name": "settings",
                    "lastModified": null,
                    "languages": []
                }
            ]
        },
        {
            "name": "member",
            "lastModified": null,
            "sections": [
                {
                    "name": "messages",
                    "lastModified": null,
                    "languages": []
                },
                {
                    "name": "preferences",
                    "lastModified": null,
                    "languages": []
                },
                {
                    "name": "profile",
                    "lastModified": null,
                    "languages": []
                }
            ]
        },
        {
            "name": "public",
            "lastModified": null,
            "sections": [
                {
                    "name": "about",
                    "lastModified": null,
                    "languages": []
                },
                {
                    "name": "contact",
                    "lastModified": null,
                    "languages": []
                },
                {
                    "name": "home",
                    "lastModified": null,
                    "languages": []
                }
            ]
        }
    ]
}

๐Ÿ‘ค Get profile

Endpoint: GET https://la.deltascripts.com/api/profile
Input: (none)
Response:
Status: HTTP 200
{
    "id": 49,
    "email": "api@example.com",
    "name": "Updated Tester",
    "is_active": 1,
    "created_at": "2025-08-23 19:16:40"
}

โœ๏ธ Update profile

Endpoint: PUT https://la.deltascripts.com/api/profile
Input:
{
    "name": "Updated Tester"
}
Response:
Status: HTTP 200
{
    "ok": true,
    "message": "Profile updated successfully"
}

โš™๏ธ List settings

Endpoint: GET https://la.deltascripts.com/api/v1/settings
Input: (none)
Response:
Status: HTTP 200
[
    {
        "id": 16,
        "setting_key": "api-cors-origins",
        "setting_value": "[\"*\"]",
        "setting_type": "json",
        "category": "api",
        "description": "Allowed CORS origins",
        "is_sensitive": 0,
        "created_at": "2025-08-23 20:27:22",
        "updated_at": "2025-08-23 20:27:22"
    },
    {
        "id": 15,
        "setting_key": "api-logging",
        "setting_value": "1",
        "setting_type": "bool",
        "category": "api",
        "description": "Enable API request logging",
        "is_sensitive": 0,
        "created_at": "2025-08-23 20:27:22",
        "updated_at": "2025-08-23 20:27:22"
    },
    {
        "id": 14,
        "setting_key": "api-rate-limit",
        "setting_value": "1000",
        "setting_type": "int",
        "category": "api",
        "description": "API rate limit per hour",
        "is_sensitive": 0,
        "created_at": "2025-08-23 20:27:22",
        "updated_at": "2025-08-23 20:27:22"
    },
    {
        "id": 10,
        "setting_key": "default-language",
        "setting_value": "en",
        "setting_type": "string",
        "category": "general",
        "description": "Default system language",
        "is_sensitive": 0,
        "created_at": "2025-08-23 20:27:22",
        "updated_at": "2025-08-23 20:27:22"
    },
    {
        "id": 13,
        "setting_key": "maintenance-mode",
        "setting_value": "0",
        "setting_type": "bool",
        "category": "general",
        "description": "Maintenance mode (0=off, 1=on)",
        "is_sensitive": 0,
        "created_at": "2025-08-23 20:27:22",
        "updated_at": "2025-08-23 20:27:22"
    },
    {
        "id": 11,
        "setting_key": "max-file-size",
        "setting_value": "10485760",
        "setting_type": "int",
        "category": "general",
        "description": "Maximum file upload size in bytes",
        "is_sensitive": 0,
        "created_at": "2025-08-23 20:27:22",
        "updated_at": "2025-08-23 20:27:22"
    },
    {
        "id": 12,
        "setting_key": "session-timeout",
        "setting_value": "604800",
        "setting_type": "int",
        "category": "general",
        "description": "Session timeout in seconds (7 days)",
        "is_sensitive": 0,
        "created_at": "2025-08-23 20:27:22",
        "updated_at": "2025-08-23 20:27:22"
    },
    {
        "id": 8,
        "setting_key": "system-name",
        "setting_value": "Translation Manager",
        "setting_type": "string",
        "category": "general",
        "description": "System display name",
        "is_sensitive": 0,
        "created_at": "2025-08-23 20:27:22",
        "updated_at": "2025-08-23 20:27:22"
    },
    {
        "id": 9,
        "setting_key": "system-version",
        "setting_value": "1.0.0",
        "setting_type": "string",
        "category": "general",
        "description": "System version",
        "is_sensitive": 0,
        "created_at": "2025-08-23 20:27:22",
        "updated_at": "2025-08-23 20:27:22"
    },
    {
        "id": 18,
        "setting_key": "email-notifications",
        "setting_value": "1",
        "setting_type": "bool",
        "category": "notifications",
        "description": "Enable email notifications",
        "is_sensitive": 0,
        "created_at": "2025-08-23 20:27:22",
        "updated_at": "2025-08-23 20:27:22"
    },
    {
        "id": 19,
        "setting_key": "notification-email",
        "setting_value": "admin@example.com",
        "setting_type": "string",
        "category": "notifications",
        "description": "Default notification email",
        "is_sensitive": 0,
        "created_at": "2025-08-23 20:27:22",
        "updated_at": "2025-08-23 20:27:22"
    },
    {
        "id": 17,
        "setting_key": "notifications-enabled",
        "setting_value": "1",
        "setting_type": "bool",
        "category": "notifications",
        "description": "Enable system notifications",
        "is_sensitive": 0,
        "created_at": "2025-08-23 20:27:22",
        "updated_at": "2025-08-23 20:27:22"
    },
    {
        "id": 7,
        "setting_key": "smtp-from-email",
        "setting_value": "noreply@yourdomain.com",
        "setting_type": "string",
        "category": "smtp",
        "description": "System sender email",
        "is_sensitive": 0,
        "created_at": "2025-08-23 20:27:22",
        "updated_at": "2025-09-23 06:20:05"
    },
    {
        "id": 6,
        "setting_key": "smtp-from-name",
        "setting_value": "Translation Manager System",
        "setting_type": "string",
        "category": "smtp",
        "description": "System sender name",
        "is_sensitive": 0,
        "created_at": "2025-08-23 20:27:22",
        "updated_at": "2025-09-23 06:20:05"
    },
    {
        "id": 1,
        "setting_key": "smtp-hostname",
        "setting_value": "smtp.gmail.com",
        "setting_type": "string",
        "category": "smtp",
        "description": "Gmail SMTP server",
        "is_sensitive": 0,
        "created_at": "2025-08-23 20:27:22",
        "updated_at": "2025-08-24 00:40:11"
    },
    {
        "id": 4,
        "setting_key": "smtp-port",
        "setting_value": "587",
        "setting_type": "int",
        "category": "smtp",
        "description": "Gmail SMTP port",
        "is_sensitive": 0,
        "created_at": "2025-08-23 20:27:22",
        "updated_at": "2025-09-23 06:20:04"
    },
    {
        "id": 5,
        "setting_key": "smtp-secure",
        "setting_value": "1",
        "setting_type": "int",
        "category": "smtp",
        "description": "Use TLS encryption",
        "is_sensitive": 0,
        "created_at": "2025-08-23 20:27:22",
        "updated_at": "2025-08-23 20:43:16"
    },
    {
        "id": 2,
        "setting_key": "smtp-username",
        "setting_value": "your-email@gmail.com",
        "setting_type": "string",
        "category": "smtp",
        "description": "Gmail username",
        "is_sensitive": 0,
        "created_at": "2025-08-23 20:27:22",
        "updated_at": "2025-09-23 06:20:04"
    },
    {
        "id": 22,
        "setting_key": "test-feature-flag",
        "setting_value": "1",
        "setting_type": "bool",
        "category": "testing",
        "description": "Test feature flag for API testing",
        "is_sensitive": 0,
        "created_at": "2025-08-24 00:40:11",
        "updated_at": "2025-08-24 00:40:11"
    }
]

๐Ÿ“‚ List settings categories

Endpoint: GET https://la.deltascripts.com/api/v1/settings/categories
Input: (none)
Response:
Status: HTTP 200
[
    "api",
    "general",
    "notifications",
    "smtp",
    "testing"
]

๐Ÿ” Get specific setting

Endpoint: GET https://la.deltascripts.com/api/v1/settings/system-name
Input: (none)
Response:
Status: HTTP 200
{
    "id": 8,
    "setting_key": "system-name",
    "setting_value": "Translation Manager",
    "setting_type": "string",
    "category": "general",
    "description": "System display name",
    "is_sensitive": 0,
    "created_at": "2025-08-23 20:27:22",
    "updated_at": "2025-08-23 20:27:22"
}

โœ๏ธ Update SMTP setting

Endpoint: PUT https://la.deltascripts.com/api/v1/settings/smtp-hostname
Input:
{
    "value": "smtp.gmail.com",
    "description": "Gmail SMTP server"
}
Response:
Status: HTTP 200
{
    "ok": true,
    "key": "smtp-hostname"
}

โž• Create custom setting

Endpoint: POST https://la.deltascripts.com/api/v1/settings
Input:
{
    "key": "test-feature-flag",
    "value": "1",
    "type": "bool",
    "category": "testing",
    "description": "Test feature flag for API testing"
}
Response:
Status: HTTP 409
{
    "error": "Setting already exists"
}

๐Ÿ—‘๏ธ Delete custom setting

Endpoint: DELETE https://la.deltascripts.com/api/v1/settings/
Input: (none)
Response:
Status: HTTP 404
{
    "error": "Not Found"
}

๐Ÿงน Cleanup

Delete project

Endpoint: DELETE https://la.deltascripts.com/api/v1/projects/114
Input: (none)
Response:
Status: HTTP 204

Remove customer member

Endpoint: DELETE https://la.deltascripts.com/api/v1/customers/88/members/73
Input: (none)
Response:
Status: HTTP 204

Delete customer

Endpoint: DELETE https://la.deltascripts.com/api/v1/customers/88
Input: (none)
Response:
Status: HTTP 204

Delete user

Endpoint: DELETE https://la.deltascripts.com/api/v1/users/73
Input: (none)
Response:
Status: HTTP 204

โœ… Done (resources cleaned up)