2025-11-24 17:02:30 -07:00
2025-11-24 16:42:06 -07:00
2025-11-24 16:42:06 -07:00
2025-11-24 17:02:30 -07:00

Identity Management API

A high-level overview of a RESTful API for managing individual customers, their online accounts, and authenticated sessions. The API follows the JSON:API specification (application/vnd.api+json) for all request and response payloads.


Base URL

http://localhost:8080/v1

Resources Overview

Resource Description
/individualCustomers Manage individual customer records
/onlineAccounts Manage online account credentials and associations
/authenticatedSessions Create and manage authenticated sessions for accounts

Content-Type Requirements

All POST and PATCH requests must include:

Content-Type: application/vnd.api+json

Individual Customers

Operations under /individualCustomers allow clients to create, retrieve, update, and delete customer profiles.

Create Individual Customer

POST /individualCustomers

Example request:

{
  "data": {
    "type": "individualCustomer",
    "attributes": {
      "firstName": "Jane",
      "lastName": "Smith",
      "emailAddress": "jane.smith@example.com"
    }
  }
}

Retrieve Customer

GET /individualCustomers/{customerId}

Example response:

{
  "data": {
    "type": "individualCustomer",
    "id": "12345",
    "attributes": {
      "firstName": "Jane",
      "lastName": "Smith",
      "emailAddress": "jane.smith@example.com"
    }
  }
}

Update Customer

PATCH /individualCustomers/{customerId}

Example request:

{
  "data": {
    "type": "individualCustomer",
    "id": "12345",
    "attributes": {
      "emailAddress": "new.email@example.com"
    }
  }
}

Delete Customer

DELETE /individualCustomers/{customerId}


Online Accounts

Represents login-capable accounts tied to customers.

Create Online Account

POST /onlineAccounts

Example request:

{
  "data": {
    "type": "onlineAccount",
    "attributes": {
      "username": "jsmith",
      "password": "MyPassword123"
    },
    "relationships": {
      "individualCustomer": {
        "data": { "type": "individualCustomer", "id": "12345" }
      }
    }
  }
}

Retrieve Online Account

GET /onlineAccounts/{accountId}

Update Online Account Credentials

PATCH /onlineAccounts/{accountId}

Example:

{
  "data": {
    "type": "onlineAccount",
    "id": "acct-789",
    "attributes": {
      "password": "NewSecurePassword456"
    }
  }
}

Authenticated Sessions

Used to authenticate an online account and generate a session token.

Create Authenticated Session

POST /authenticatedSessions

Example request:

{
  "data": {
    "type": "authenticatedSession",
    "attributes": {
      "username": "jsmith",
      "password": "MyPassword123"
    }
  }
}

Example response:

{
  "data": {
    "type": "authenticatedSession",
    "id": "session-001",
    "attributes": {
      "issuedAt": "2025-01-01T12:00:00Z",
      "expiresAt": "2025-01-01T14:00:00Z",
      "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
    }
  }
}

License

Specify license information here.


Acknowledgments

Document inspirations, contributors, or tools used in the APIs development.

Description
Proof-of-concept project demonstrating how JSONAPI can be used to authenticate online accounts.
Readme 45 KiB
Languages
Java 100%