200Notes

API Endpoints

Complete reference for all currently implemented 200Notes API endpoints. This document provides detailed information about request/response formats, parameters, and examples for each available endpoint.

📋 Implementation Status

Authentication Endpoints: Fully implemented

Project Management: Fully implemented

Team Collaboration: Routes implemented (some methods pending)

🚧 Notes & Tasks: Coming in Phase 2

🚧 AI Features: Coming in Phase 3

Base URL

All API requests should be made to:

https://200notes.com/api/v1

Authentication

All protected endpoints require authentication using Bearer tokens in the format api_key:api_secret:

Authorization: Bearer sk-abc123:xyz789

✅ Authentication Endpoints

User registration, login, and API key management.

Register New Account

POST /auth/register

Request Body

Field Type Required Description
name string Yes User's full name
email string Yes Valid email address
password string Yes Password (min 8 characters)
password_confirmation string Yes Password confirmation

Example Request

curl -X POST \
  https://200notes.com/api/v1/auth/register \
  -H "Content-Type: application/json" \
  -d '{
    "name": "John Doe",
    "email": "john@example.com",
    "password": "securepassword123",
    "password_confirmation": "securepassword123"
  }'

Example Response

{
  "message": "Registration successful",
  "data": {
    "user": {
      "id": 1,
      "name": "John Doe",
      "email": "john@example.com",
      "created_at": "2024-01-15T10:30:00.000000Z"
    },
    "api_key": "sk-abc123",
    "api_secret": "xyz789"
  }
}

Login

POST /auth/login

Request Body

Field Type Required Description
email string Yes User's email address
password string Yes User's password

Example Request

curl -X POST \
  https://200notes.com/api/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{
    "email": "john@example.com",
    "password": "securepassword123"
  }'

Refresh API Keys

POST /auth/refresh-keys

Generate new API credentials. Requires existing valid authentication.

Example Request

curl -X POST \
  https://200notes.com/api/v1/auth/refresh-keys \
  -H "Authorization: Bearer sk-abc123:xyz789" \
  -H "Content-Type: application/json"

✅ Project Management

Complete CRUD operations for projects.

List Projects

GET /projects

Get all projects the authenticated user has access to.

Example Request

curl -X GET \
  https://200notes.com/api/v1/projects \
  -H "Authorization: Bearer sk-abc123:xyz789"

Example Response

{
  "data": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "name": "Marketing Campaign",
      "description": "Q1 marketing campaign planning",
      "is_favorite": false,
      "owner": {
        "id": 1,
        "name": "John Doe",
        "email": "john@example.com"
      },
      "created_at": "2024-01-15T10:30:00.000000Z",
      "updated_at": "2024-01-16T14:20:00.000000Z"
    }
  ]
}

Create Project

POST /projects

Request Body

Field Type Required Description
name string Yes Project name (max 255 characters)
description string No Project description

Example Request

curl -X POST \
  https://200notes.com/api/v1/projects \
  -H "Authorization: Bearer sk-abc123:xyz789" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "New Project",
    "description": "A project for managing client deliverables"
  }'

Example Response

{
  "message": "Project created successfully",
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440001",
    "name": "New Project",
    "description": "A project for managing client deliverables",
    "is_favorite": false,
    "owner_id": 1,
    "created_at": "2024-01-15T10:30:00.000000Z",
    "updated_at": "2024-01-15T10:30:00.000000Z"
  }
}

Get Project

GET /projects/{id}

Get details of a specific project you have access to.

Example Request

curl -X GET \
  https://200notes.com/api/v1/projects/550e8400-e29b-41d4-a716-446655440000 \
  -H "Authorization: Bearer sk-abc123:xyz789"

Example Response

{
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "Marketing Campaign",
    "description": "Q1 marketing campaign planning",
    "is_favorite": false,
    "owner": {
      "id": 1,
      "name": "John Doe",
      "email": "john@example.com"
    },
    "role": "owner",
    "created_at": "2024-01-15T10:30:00.000000Z",
    "updated_at": "2024-01-16T14:20:00.000000Z"
  }
}

Update Project

PUT /projects/{id}

Update an existing project. Only accessible to project members.

Request Body

Field Type Required Description
name string No Project name (max 255 characters)
description string No Project description

Example Request

curl -X PUT \
  https://200notes.com/api/v1/projects/550e8400-e29b-41d4-a716-446655440000 \
  -H "Authorization: Bearer sk-abc123:xyz789" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Updated Project Name",
    "description": "Updated project description"
  }'

Delete Project

DELETE /projects/{id}

Delete a project. Only accessible to project owners.

Example Request

curl -X DELETE \
  https://200notes.com/api/v1/projects/550e8400-e29b-41d4-a716-446655440000 \
  -H "Authorization: Bearer sk-abc123:xyz789"

Toggle Project Favorite

POST /projects/{id}/favorite

Toggle the favorite status of a project.

Example Request

curl -X POST \
  https://200notes.com/api/v1/projects/550e8400-e29b-41d4-a716-446655440000/favorite \
  -H "Authorization: Bearer sk-abc123:xyz789"

✅ Team Collaboration

Manage project team members and collaboration.

⚠️ Implementation Status

Routes are defined but some controller methods are still being implemented. Check the actual API responses for current functionality.

Invite Team Member

POST /projects/{id}/invite

List Project Members

GET /projects/{id}/members

Update Member Role

PUT /projects/{id}/members/{user_id}

Remove Team Member

DELETE /projects/{id}/members/{user_id}

🚧 Notes (Coming Soon)

Note management endpoints will be available in Phase 2.

📝 Planned Endpoints

  • GET /projects/{id}/notes - List project notes
  • POST /projects/{id}/notes - Create a new note
  • GET /notes/{id} - Get note details
  • PUT /notes/{id} - Update note
  • DELETE /notes/{id} - Delete note

🚧 Tasks (Coming Soon)

Task management endpoints will be available in Phase 2.

✅ Planned Endpoints

  • GET /projects/{id}/tasks - List project tasks
  • POST /projects/{id}/tasks - Create a new task
  • GET /tasks/{id} - Get task details
  • PUT /tasks/{id} - Update task
  • DELETE /tasks/{id} - Delete task
  • PATCH /tasks/{id}/status - Update task status

🚧 AI Features (Coming Soon)

AI-powered analysis endpoints will be available in Phase 3.

🤖 Planned Endpoints

  • POST /ai/analyze-project/{id} - Analyze project with AI
  • GET /ai/analyses/{project_id} - Get analysis history
  • POST /ai/generate-tasks - Generate task suggestions

HTTP Status Codes

Code Status Description
200 OK Request successful
201 Created Resource created successfully
400 Bad Request Invalid request format
401 Unauthorized Invalid or missing authentication
403 Forbidden Insufficient permissions
404 Not Found Resource not found
422 Unprocessable Entity Validation errors
500 Internal Server Error Server error

Error Response Examples

Validation Error (422)

{
  "error": "Validation failed",
  "messages": {
    "name": [
      "The name field is required."
    ]
  }
}

Authentication Error (401)

{
  "message": "Unauthenticated."
}

Access Denied (403)

{
  "error": "Access denied"
}

🚀 Start Building

Ready to integrate with 200Notes? Start with authentication and try the project management endpoints above.