# Spaceship Integration via LowCodeAPI

## Overview

Spaceship is an ICANN-accredited domain registrar providing domain registration and management services. The Spaceship API offers:

- **Domain Management** - Register, renew, and transfer domains
- **DNS Management** - Configure DNS records and settings
- **Domain Lists** - Browse and search available domains
- **Whois** - Retrieve domain ownership information

## Base Endpoint

```
https://api.lowcodeapi.com/spaceship/
```

## Authentication

LowCodeAPI handles authentication automatically using API Key and Secret headers. You only need to:

1. **Sign up** at [Spaceship](https://www.spaceship.com) to get your API Key and Secret
2. **Connect your account** in the LowCodeAPI dashboard
3. **Use your `api_token`** in all requests

The `api_token` is your LowCodeAPI authentication token. LowCodeAPI will automatically:
- Fetch your Spaceship API key and secret
- Apply them to each request via X-Api-Key and X-Api-Secret headers

**Auth Type**: API Key (Header - dual authentication)

## API Categories

- **Domain & Hosting** - Domain registration and management

## Common Endpoints

### Category: Domains

#### Get Domain List

**Method**: `GET` | **LowCodeAPI Path**: `/v1/domains`

**Full URL**:
```
https://api.lowcodeapi.com/spaceship/v1/domains?api_token={api_token}
```

**Description**: Retrieve a paginated list of domains in your account.

**Query Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `skip` | string | No | Number of response items to skip |
| `take` | integer | No | Number of response items per page |
| `orderBy` | array | No | Specifies fields and order to sort response items |

**Example Request**:
```bash
curl -X GET "https://api.lowcodeapi.com/spaceship/v1/domains?take=50&api_token=YOUR_API_TOKEN"
```

**Official Documentation**: [Get Domains](https://docs.spaceship.dev/#tag/Domains)

---

#### Get Domain Details

**Method**: `GET` | **LowCodeAPI Path**: `/v1/domains/domain_id`

**Full URL**:
```
https://api.lowcodeapi.com/spaceship/v1/domains/domain_id?id={domain_id}&api_token={api_token}
```

**Description**: Retrieve detailed information about a specific domain.

**Query Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Domain identifier or domain name |

**Example Request**:
```bash
# Replace DOMAIN_ID with actual domain ID or domain name
curl -X GET "https://api.lowcodeapi.com/spaceship/v1/domains/domain_id?id=example.com&api_token=YOUR_API_TOKEN"
```

**Official Documentation**: [Get Domain](https://docs.spaceship.dev/#tag/Domains)

---

#### Check Domain Availability

**Method**: `GET` | **LowCodeAPI Path**: `/v1/domains/check`

**Full URL**:
```
https://api.lowcodeapi.com/spaceship/v1/domains/check?domain={domain}&api_token={api_token}
```

**Description**: Check if a domain is available for registration.

**Query Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `domain` | string | Yes | Domain name to check |

**Example Request**:
```bash
curl -X GET "https://api.lowcodeapi.com/spaceship/v1/domains/check?domain=mynewdomain.com&api_token=YOUR_API_TOKEN"
```

**Official Documentation**: [Check Domain](https://docs.spaceship.dev/#tag/Domains)

---

### Category: DNS

#### Get DNS Records

**Method**: `GET` | **LowCodeAPI Path**: `/v1/domains/domain_id/dns`

**Full URL**:
```
https://api.lowcodeapi.com/spaceship/v1/domains/domain_id/dns?id={domain_id}&api_token={api_token}
```

**Description**: Retrieve DNS records for a domain.

**Query Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Domain identifier or domain name |

**Example Request**:
```bash
# Replace DOMAIN_ID with actual domain ID or domain name
curl -X GET "https://api.lowcodeapi.com/spaceship/v1/domains/domain_id/dns?id=example.com&api_token=YOUR_API_TOKEN"
```

**Official Documentation**: [Get DNS](https://docs.spaceship.dev/#tag/DNS)

---

## Usage Examples

### Example 1: List Domains

Browse all domains in your account:

```bash
# Get first page of domains
# No ID needed - lists all domains
curl -X GET "https://api.lowcodeapi.com/spaceship/v1/domains?take=50&skip=0&api_token=YOUR_API_TOKEN"

# Get next page
curl -X GET "https://api.lowcodeapi.com/spaceship/v1/domains?take=50&skip=50&api_token=YOUR_API_TOKEN"
```

### Example 2: Check Domain Availability

Check if domains are available:

```bash
# Check single domain
# No ID needed - checks availability
curl -X GET "https://api.lowcodeapi.com/spaceship/v1/domains/check?domain=mybusiness.com&api_token=YOUR_API_TOKEN"

# Check multiple domains
curl -X GET "https://api.lowcodeapi.com/spaceship/v1/domains/check?domain=mybusiness.net&api_token=YOUR_API_TOKEN"
curl -X GET "https://api.lowcodeapi.com/spaceship/v1/domains/check?domain=mybusiness.org&api_token=YOUR_API_TOKEN"
```

### Example 3: Get Domain Details

View detailed domain information:

```bash
# Get domain details
# Replace DOMAIN_ID with actual domain name or ID
curl -X GET "https://api.lowcodeapi.com/spaceship/v1/domains/domain_id?id=example.com&api_token=YOUR_API_TOKEN"

# Get DNS records for domain
# Replace DOMAIN_ID with actual domain name or ID
curl -X GET "https://api.lowcodeapi.com/spaceship/v1/domains/domain_id/dns?id=example.com&api_token=YOUR_API_TOKEN"
```

## Complete Endpoint Reference

For a complete list of all 22 endpoints and their parameters, refer to:

- **OpenAPI Definition**: https://backend.lowcodeapi.com/spaceship/definition
- **Official Spaceship Documentation**: https://docs.spaceship.dev

## Rate Limits & Best Practices

- **Rate Limit**: Refer to your Spaceship plan for rate limits
- **Best Practices**:
  - Use pagination for large domain lists
  - Cache domain availability results
  - Store domain IDs for efficient updates
  - Implement proper error handling for registration conflicts
  - Use appropriate DNS record types for your needs

## Error Handling

All responses are wrapped in a `data` key:
```json
{
  "data": {
    // Actual response from Spaceship
  }
}
```

Common errors:
- **400**: Invalid request parameters
- **401**: Invalid API credentials
- **404**: Domain not found
- **409**: Domain unavailable or conflict
- **429**: Rate limit exceeded