Skip to content

Commit

Permalink
Merge pull request #2 from octoml/fern/init
Browse files Browse the repository at this point in the history
🌿 introduce generators and OpenAPI spec merging
  • Loading branch information
fern-support authored Mar 7, 2024
2 parents 78f246a + d9fb826 commit ad188fe
Show file tree
Hide file tree
Showing 22 changed files with 463 additions and 1 deletion.
68 changes: 68 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
name: ci

on:
push: {}
release:
types:
- published

jobs:
fern-check:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v3

- name: Install Fern
run: npm install -g fern-api

- name: Check Fern API is valid
run: fern check

fern-generate-python:
needs: fern-check
if: github.event_name == 'release' && startsWith(github.event.release.tag_name, 'python@')
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v3

- name: Setup node
uses: actions/setup-node@v3

- name: Download Fern
run: npm install -g fern-api

- name: Generate Python SDK
env:
FERN_TOKEN: ${{ secrets.FERN_TOKEN }}
PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }}
run: |
tag=${{ github.event.release.tag_name }}
prefix="python@"
SDK_VERSION="${tag#$prefix}"
fern generate --api api --group python-sdk --log-level debug --version "$SDK_VERSION"
fern-generate-ts:
needs: fern-check
if: github.event_name == 'release' && startsWith(github.event.release.tag_name, 'node@')
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v3

- name: Setup node
uses: actions/setup-node@v3

- name: Download Fern
run: npm install -g fern-api

- name: Generate Node SDK
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
FERN_TOKEN: ${{ secrets.FERN_TOKEN }}
run: |
tag=${{ github.event.release.tag_name }}
prefix="node@"
SDK_VERSION="${tag#$prefix}"
fern generate --api api --group ts-sdk --log-level debug --version "$SDK_VERSION"
28 changes: 27 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,27 @@
Fern Config
# Octo Fern Configuration

This repository contains your Fern Configuration:
- OpenAPI specs
- [Asset Lake OpenAPI Spec](./fern/apis/asset-lake/openapi/openapi.json)
- [Fine Tuning OpenAPI Spec](./fern/apis/fine-tuning/openapi/openapi.json)
- [Image Gen OpenAPI Spec](./fern/apis/image-gen/openapi/openapi.json)
- [Text Gen OpenAPI Spec](./fern/apis/text-gen/openapi/openapi.json)
- [Generators config](./fern/apis/api/generators.yml)

## Validating your API Definition

To validate your API, run:
```sh
npm install -g fern-api # only required once
fern check
```
## Updating your SDKs

To update your SDKs, simply tag a release with `<language>@<version>`
e.g. `python@<version>` or `node@<version>` on the repository. Under the hood,
this leverages the Fern CLI:

```sh
npm install -g fern-api # only required once
fern generate --group python-sdk --api api
```
21 changes: 21 additions & 0 deletions fern/apis/api/definition/api.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: api
display-name: OctoAI

error-discrimination:
strategy: status-code

auth: BearerAuthScheme
auth-schemes:
BearerAuthScheme:
scheme: bearer
token:
name: api_key
env: OCTOAI_TOKEN

default-environment: Production
environments:
Production:
urls:
Default: https://api.octoai.cloud
ImageGen: https://image.octoai.cloud
TextGen: https://text.octoai.cloud
1 change: 1 addition & 0 deletions fern/apis/api/definition/asset-lake/__package__.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export: asset-lake
1 change: 1 addition & 0 deletions fern/apis/api/definition/fine-tuning/__package__.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export: fine-tuning
1 change: 1 addition & 0 deletions fern/apis/api/definition/image-gen/__package__.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export: image-gen
1 change: 1 addition & 0 deletions fern/apis/api/definition/text-gen/__package__.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export: text-gen
5 changes: 5 additions & 0 deletions fern/apis/api/dependencies.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
dependencies:
asset-lake: ../asset-lake
fine-tuning: ../fine-tuning
image-gen: ../image-gen
text-gen: ../text-gen
59 changes: 59 additions & 0 deletions fern/apis/api/generators.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
default-group: local
groups:
local:
generators:
- name: fernapi/fern-python-sdk
version: 0.11.9
output:
location: local-file-system
path: ../../../python
config:
client_class_name: OctoAI
improved_imports: true
pydantic_config:
use_str_enums: true
- name: fernapi/fern-typescript-node-sdk
version: 0.12.5
output:
location: local-file-system
path: ../../../typescript
config:
namespaceExport: OctoAI
skipResponseValidation: true
allowCustomFetcher: true
includeApiReference: true
smart-casing: true
python-sdk:
generators:
- name: fernapi/fern-python-sdk
version: 0.11.9
output:
location: pypi
package-name: "octoai"
token: ${PYPI_TOKEN}
github:
repository: octoml/octoai-python-sdk-fern
mode: pull-request
config:
client_class_name: OctoAI
improved_imports: true
pydantic_config:
use_str_enums: true
smart-casing: true
ts-sdk:
generators:
- name: fernapi/fern-typescript-node-sdk
version: 0.12.5
output:
location: npm
package-name: "@octoai/octoai-node-client"
token: ${NPM_TOKEN}
github:
repository: octoml/octoai-typescript-sdk-fern
mode: pull-request
config:
namespaceExport: OctoAI
skipResponseValidation: true
allowCustomFetcher: true
includeApiReference: true
smart-casing: true
2 changes: 2 additions & 0 deletions fern/apis/asset-lake/generators.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
openapi: ./openapi/openapi.json
openapi-overrides: ./openapi/openapi-overrides.yml
90 changes: 90 additions & 0 deletions fern/apis/asset-lake/openapi/openapi-overrides.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
paths:
# Hide healthcheck
/health:
get:
x-fern-ignore: true
/v1/assets:
get:
x-fern-sdk-method-name: list
servers:
- url: https://api.octoai.cloud
x-name: Default
post:
x-fern-sdk-method-name: create
servers:
- url: https://api.octoai.cloud
x-name: Default
/v1/assets/{asset_id}:
delete:
x-fern-sdk-method-name: delete
servers:
- url: https://api.octoai.cloud
x-name: Default
/v1/assets/{asset_id}/complete-upload:
post:
x-fern-sdk-method-name: completeUpload
servers:
- url: https://api.octoai.cloud
x-name: Default
/v1/assets/{asset_owner_and_name_or_id}:
get:
x-fern-sdk-method-name: get
servers:
- url: https://api.octoai.cloud
x-name: Default
components:
schemas:
Asset:
x-fern-type-name: Asset
AssetType:
x-fern-type-name: AssetType
BaseEngine:
x-fern-type-name: BaseEngine
CheckpointData:
x-fern-type-name: CheckpointData
CompleteAssetUploadRequest:
x-fern-type-name: CompleteAssetUploadRequest
CompleteAssetUploadResponse:
x-fern-type-name: CompleteAssetUploadResponse
CreateAssetRequest:
x-fern-type-name: CreateAssetRequest
CreateAssetResponse:
x-fern-type-name: CreateAssetResponse
DataType:
x-fern-type-name: DataType
DeleteAssetResponse:
x-fern-type-name: DeleteAssetResponse
FileData:
x-fern-type-name: FileData
FileExtension:
x-fern-type-name: FileExtension
FileFormat:
x-fern-type-name: FileFormat
FileStructure:
x-fern-type-name: FileStructure
HTTPValidationError:
x-fern-type-name: HTTPValidationError
LatentData:
x-fern-type-name: LatentData
ListAssetsResponse:
x-fern-type-name: ListAssetsResponse
LoraData:
x-fern-type-name: LoraData
NoTransferApi:
x-fern-type-name: NoTransferApi
PresignedUrlTransferApi:
x-fern-type-name: PresignedUrlTransferApi
RetrieveAssetResponse:
x-fern-type-name: RetrieveAssetResponse
Status:
x-fern-type-name: Status
StsTransferApi:
x-fern-type-name: StsTransferApi
TextualInversionData:
x-fern-type-name: TextualInversionData
TransferApiType:
x-fern-type-name: TransferApiType
VAEData:
x-fern-type-name: VAEData
ValidationError:
x-fern-type-name: ValidationError
File renamed without changes.
2 changes: 2 additions & 0 deletions fern/apis/fine-tuning/generators.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
openapi: ./openapi/openapi.json
openapi-overrides: ./openapi/openapi-overrides.yml
67 changes: 67 additions & 0 deletions fern/apis/fine-tuning/openapi/openapi-overrides.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
paths:
# Hide healthcheck
/health:
get:
x-fern-ignore: true
/v1/tune:
post:
x-fern-sdk-method-name: create
servers:
- url: https://api.octoai.cloud
x-name: Default
/v1/tune/{tune_id}:
get:
x-fern-sdk-method-name: get
servers:
- url: https://api.octoai.cloud
x-name: Default
delete:
x-fern-sdk-method-name: delete
servers:
- url: https://api.octoai.cloud
x-name: Default
/v1/tune/{tune_id}/cancel:
post:
x-fern-sdk-method-name: cancel
servers:
- url: https://api.octoai.cloud
x-name: Default
/v1/tunes:
get:
x-fern-sdk-method-name: list
servers:
- url: https://api.octoai.cloud
x-name: Default
components:
schemas:
BaseEngine:
x-fern-type-name: BaseEngine
CreateTuneRequest:
x-fern-type-name: CreateTuneRequest
HTTPValidationError:
x-fern-type-name: HTTPValidationError
ListTunesResponse:
x-fern-type-name: ListTunesResponse
LoraTune-Input:
x-fern-type-name: LoraTune
LoraTune-Output:
x-fern-type-name: LoraTune
LoraTuneCheckpoint:
x-fern-type-name: LoraTuneCheckpoint
LoraTuneFile:
x-fern-type-name: LoraTuneFile
TextToSpeechLatentTune:
x-fern-type-name: TextToSpeechLatentTune
Tune:
x-fern-type-name: Tune
properties:
details:
x-fern-type-name: TuneDetails
TuneResult:
x-fern-type-name: TuneResult
TuneStatus:
x-fern-type-name: TuneStatus
TuneType:
x-fern-type-name: TuneType
ValidationError:
x-fern-type-name: ValidationError
File renamed without changes.
2 changes: 2 additions & 0 deletions fern/apis/image-gen/generators.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
openapi: ./openapi/openapi.json
openapi-overrides: ./openapi/openapi-overrides.yml
Loading

0 comments on commit ad188fe

Please sign in to comment.