Sakthibalan

Sakthibalan

I created a post request (localhost:4000/api/students/)

Headers:
‘Accept: application/vnd.api+json’
‘Content-Type: application/vnd.api+json’

Body:

{
  "data": {
    "type": "student",
    "attributes": {
      "first_name": "some name",
      "last_name": "last name"
    }
  }
}

I got an error InvalidBody

{
    "errors": [
        {
            "code": "invalid_body",
            "id": "a174c29e-5ffe-4cf4-b4a4-97a67f6e65aa",
            "meta": {},
            "status": "400",
            "title": "InvalidBody",
            "source": {
                "pointer": "data/attributes/last_name"
            },
            "detail": "Expected only defined properties, got key [\"data\", \"attributes\", \"last_name\"]."
        },
        {
            "code": "invalid_body",
            "id": "a6408d19-4271-4753-b86a-134fd009af93",
            "meta": {},
            "status": "400",
            "title": "InvalidBody",
            "source": {
                "pointer": "data/attributes/first_name"
            },
            "detail": "Expected only defined properties, got key [\"data\", \"attributes\", \"first_name\"]."
        }
    ],
    "jsonapi": {
        "version": "1.0"
    }
}

Showing Posts 1 to 5

kamaroly

kamaroly

How does your resouce look like?

Sakthibalan

Sakthibalan OP

defmodule MyApp.Students do
  use Ash.Domain, extensions: [AshJsonApi.Domain]

  authorization do
    authorize :by_default
  end

  resources do
    resource MyApp.Students.Student
  end
end
defmodule MyApp.Students.Student do
  use Ash.Resource,
    domain: MyApp.Students,
    data_layer: AshPostgres.DataLayer,
    extensions: [
      AshJsonApi.Resource
    ]

  json_api do
    type "student"

    routes do
      base("/students")

      get(:stud, route: "/student")
      index :read
      post(:create)
      patch(:update)
      delete(:destroy)
      get(:login)
    end
  end

  actions do
    read :read do
      primary? true
    end

    create :create
    update :update
    destroy :destroy
  end

  postgres do
    table "students"
    repo MyApp.Repo
  end

  attributes do
    uuid_primary_key :id

    attribute :first_name, :string do
      allow_nil? false
    end

    attribute :last_name, :string do
      allow_nil? false
    end

    create_timestamp :inserted_at
    update_timestamp :updated_at
  end
end
zachdaniel

zachdaniel

Creator of Ash

Two things:

First, The reason for this specific error is that the first and last name are not accepted by the actions. You probably want:


create :create do
  accept [:first_name, :last_name]
end

update :update do
  accept [:first_name, :last_name]
end

second, you likely want to make the first and last name attributes public? so that they display in the API.

Sakthibalan

Sakthibalan OP

Thanks, @zachdaniel @kamaroly, It works good.

kamaroly

kamaroly

The following should also work.

  actions do
    # ========Add this line============
    default_accept  [:first_name, :last_name]
  end
— All posts loaded —

Where Next? Top

Trending in Questions Top

katta
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
brecabral
Documentation While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
achenet
Hello, I’m trying to build a basic Phoenix web-app, and I’d like to use Tailwind. However, when I launch mix phx.server, I get an error...
New
kpanic
Hi everyone, I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding. I sta...
New
asweet-confluent
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
Cxx-mlr
I’m working on a small exercise involving update_in/3, and I came up with this solution: data = %{ name: "Periodic Table", category:...
New
ChrisAmelia
I’ve got trouble wrapping my head around the order in which functions are called in this snippet (from Phoenix’s authentication): toke...
New

Other Trending Topics Top

GenericJam
Edit: 2026 May 15 - This post is archived. Mob is alive!! Main docs: mob v0.7.11 — Documentation A bit of explanation for the slightly c...
New
JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
budgie
A little off-topic, but I feel like people here have a good head on their shoulders. I used to be quite good at making software. Was luc...
New
KristerV
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews